Skip to content

Commit cfdda33

Browse files
author
baxiang
committed
20200516
1 parent beb055b commit cfdda33

File tree

4 files changed

+160
-0
lines changed

4 files changed

+160
-0
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package main
2+
3+
import "fmt"
4+
5+
type TreeNode struct {
6+
Val int
7+
Left *TreeNode
8+
Right *TreeNode
9+
}
10+
11+
func sumNumbers(root *TreeNode) int {
12+
var res int
13+
dfs(root, 0, &res)
14+
return res
15+
}
16+
17+
func dfs(root *TreeNode, val int, res *int) {
18+
if root == nil {
19+
return
20+
}
21+
val = val*10 + root.Val
22+
if root.Left == nil && root.Right == nil {
23+
*res = *res + val
24+
}
25+
dfs(root.Left, val, res)
26+
dfs(root.Right, val, res)
27+
}
28+
29+
func main() {
30+
one := &TreeNode{Val: 1}
31+
two := &TreeNode{Val: 2}
32+
one.Left = two
33+
three := &TreeNode{Val: 3}
34+
one.Right = three
35+
fmt.Println(sumNumbers(one))
36+
37+
four := &TreeNode{Val: 4}
38+
nine := &TreeNode{Val: 9}
39+
four.Left = nine
40+
zero := &TreeNode{Val: 0}
41+
four.Right = zero
42+
five := &TreeNode{Val: 5}
43+
nine.Left = five
44+
one = &TreeNode{Val: 1}
45+
nine.Right = one
46+
fmt.Println(sumNumbers(four))
47+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package main
2+
3+
type TreeNode struct {
4+
Val int
5+
Left *TreeNode
6+
Right *TreeNode
7+
}
8+
9+
func levelOrder(root *TreeNode) []int {
10+
var res []int
11+
if root==nil{
12+
return res
13+
}
14+
queue := []*TreeNode{root}
15+
for len(queue)>0{
16+
size :=len(queue)
17+
for i:=0;i<size;i++{
18+
node :=queue[i]
19+
if node.Left!=nil{
20+
queue = append(queue,node.Left)
21+
}
22+
if node.Right!=nil{
23+
queue = append(queue,node.Right)
24+
}
25+
res = append(res,node.Val)
26+
}
27+
queue = queue[size:]
28+
}
29+
return res
30+
}
31+
32+
//面试题32 - I. 从上到下打印二叉树
33+
func main() {
34+
35+
}

49chou-shu-lcof/main.go

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func nthUglyNumber(n int) int {
6+
count := 0
7+
number :=1
8+
uglyNumber :=1
9+
for count<n{
10+
if isUglyNum(number){
11+
count++
12+
uglyNumber = number
13+
}
14+
number++
15+
}
16+
return uglyNumber
17+
}
18+
19+
func isUglyNum(n int)bool{
20+
for n%2==0{
21+
n=n/2
22+
}
23+
for n%3==0{
24+
n=n/3
25+
}
26+
for n%5==0{
27+
n=n/5
28+
}
29+
return n<=1
30+
}
31+
32+
//面试题49. 丑数
33+
func main() {
34+
//fmt.Println(isUglyNum(2))
35+
fmt.Println(nthUglyNumber(10))
36+
fmt.Println(nthUglyNumber(11))
37+
//for i:=1;i<=20;i++{
38+
// if isUglyNum(i){
39+
// fmt.Println(i)
40+
// }
41+
//}
42+
}

53que-shi-de-shu-zi-lcof/main.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func missingNumber1(nums []int) int {
6+
for i:=1;i<len(nums);i++{
7+
if nums[i]-nums[i-1]!=1{
8+
return nums[i-1]+1
9+
}
10+
}
11+
if nums[0]!=0{
12+
return 0
13+
}
14+
return nums[len(nums)-1]+1
15+
}
16+
func missingNumber(nums []int) int {
17+
left :=0
18+
right :=len(nums)
19+
for left<right{
20+
mid := left+(right-left)>>1
21+
if nums[mid]==mid{
22+
left = mid+1
23+
}else {
24+
right = mid
25+
}
26+
}
27+
return left
28+
}
29+
30+
func main() {
31+
fmt.Println(missingNumber([]int{0}))//1
32+
fmt.Println(missingNumber([]int{1}))//0
33+
fmt.Println(missingNumber([]int{0,1}))//2
34+
fmt.Println(missingNumber([]int{0,1,3}))//2
35+
fmt.Println(missingNumber([]int{0,1,2,3,4,5,6,7,9}))//8
36+
}

0 commit comments

Comments
 (0)