add new solutions
This commit is contained in:
parent
886b5e0a8e
commit
67cad91898
47 changed files with 1549 additions and 1 deletions
36
solutions/4/q437/solution.go
Normal file
36
solutions/4/q437/solution.go
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
package q437
|
||||
|
||||
type TreeNode struct {
|
||||
Val int
|
||||
Left *TreeNode
|
||||
Right *TreeNode
|
||||
}
|
||||
|
||||
func count(node *TreeNode, prefix []int, target int) int {
|
||||
if node == nil {
|
||||
return 0
|
||||
}
|
||||
if len(prefix) > 0 {
|
||||
prefix = append(prefix, node.Val+prefix[len(prefix)-1])
|
||||
} else {
|
||||
prefix = append(prefix, node.Val)
|
||||
}
|
||||
|
||||
cnt := 0
|
||||
for i := range len(prefix) - 1 {
|
||||
if prefix[len(prefix)-1]-prefix[i] == target {
|
||||
cnt++
|
||||
}
|
||||
}
|
||||
if prefix[len(prefix)-1] == target {
|
||||
cnt++
|
||||
}
|
||||
|
||||
return cnt + count(node.Left, prefix, target) + count(node.Right, prefix, target)
|
||||
}
|
||||
|
||||
func pathSum(root *TreeNode, targetSum int) int {
|
||||
return count(root, nil, targetSum)
|
||||
}
|
||||
|
||||
var _ = pathSum
|
||||
39
solutions/4/q443/solution.go
Normal file
39
solutions/4/q443/solution.go
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
package q443
|
||||
|
||||
func compress(chars []byte) int {
|
||||
seqLen := 0
|
||||
char := chars[0]
|
||||
|
||||
p := 1
|
||||
|
||||
writeNumber := func(num int) {
|
||||
i := 1
|
||||
for ; i*10 <= num; i *= 10 {
|
||||
}
|
||||
for ; i > 0; i /= 10 {
|
||||
chars[p] = byte(num/i) + '0'
|
||||
p++
|
||||
num %= i
|
||||
}
|
||||
}
|
||||
|
||||
for _, c := range chars {
|
||||
if c == char {
|
||||
seqLen++
|
||||
} else {
|
||||
char = c
|
||||
if seqLen > 1 {
|
||||
writeNumber(seqLen)
|
||||
}
|
||||
seqLen = 1
|
||||
chars[p] = char
|
||||
p++
|
||||
}
|
||||
}
|
||||
if seqLen > 1 {
|
||||
writeNumber(seqLen)
|
||||
}
|
||||
return p
|
||||
}
|
||||
|
||||
var _ = compress
|
||||
Loading…
Add table
Add a link
Reference in a new issue