8000 Merge pull request #129 from kylesliu/develop · zzti/awesome-golang-leetcode@ab3bad6 · GitHub
[go: up one dir, main page]

Skip to content

Commit ab3bad6

Browse files
authored
Merge pull request 6boris#129 from kylesliu/develop
update 198 Solution
2 parents 01450bb + db7433e commit ab3bad6

File tree

2 files changed

+40
-17
lines changed

2 files changed

+40
-17
lines changed

src/0198.House-Robber/Solution.go

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,14 @@ package Solution
22

33
// 普通的动态规划
44
func rob(nums []int) int {
5-
nLenghth := len(nums)
5+
dp := make([][2]int, len(nums)+1)
66

7-
dp := make([][2]int, nLenghth+1)
8-
for i := 1; i <= nLenghth; i++ {
9-
dp[i][0] = Max(dp[i-1][0], dp[i-1][1])
7+
for i := 1; i <= len(nums); i++ {
8+
dp[i][0] = max(dp[i-1][0], dp[i-1][1])
109
dp[i][1] = nums[i-1] + dp[i-1][0]
1110
}
1211
//fmt.Println(dp)
13-
return Max(dp[nLenghth][0], dp[nLenghth][1])
12+
return max(dp[len(nums)][0], dp[len(nums)][1])
1413
}
1514

1615
// 优化空间
@@ -19,26 +18,27 @@ func rob2(nums []int) int {
1918

2019
for _, v := range nums {
2120
tmp := prevNo
22-
prevNo = Max(prevNo, prevYes)
21+
prevNo = max(prevNo, prevYes)
2322
prevYes = v + tmp
2423
}
25-
return Max(prevNo, prevYes)
24+
return max(prevNo, prevYes)
2625
}
2726

28-
func Max(x, y int) int {
29-
if x > y {
30-
return x
31-
}
32-
return y
33-
}
3427
func rob3(nums []int) int {
3528
robEven, robOdd := 0, 0
3629
for i := 0; i < len(nums); i++ {
37-
if i % 2 ==0 {
38-
robEven = Max(robEven + nums[i] , robOdd)
30+
if i%2 == 0 {
31+
robEven = max(robEven+nums[i], robOdd)
3932
} else {
40-
robOdd = Max(robEven , nums[i] + robOdd)
33+
robOdd = max(robEven, nums[i]+robOdd)
4134
}
4235
}
43-
return Max(robEven,robOdd)
36+
return max(robEven, robOdd)
37+
}
38+
39+
func max(x, y int) int {
40+
if x > y {
41+
return x
42+
}
43+
return y
4444
}

src/0198.House-Robber/Solution_test.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,29 @@ func TestSolution2(t *testing.T) {
5252
}
5353
}
5454

55+
func TestSolution3(t *testing.T) {
56+
// 测试用例
57+
cases := []struct {
58+
name string
59+
inputs []int
60+
expect int
61+
}{
62+
{"TestCacse 1", []int{1, 2, 3, 1}, 4},
63+
{"TestCacse 1", []int{2, 7, 9, 3, 1}, 12},
64+
}
65+
66+
// 开始测试
67+
for _, c := range cases {
68+
t.Run(c.name, func(t *testing.T) {
69+
got := rob3(c.inputs)
70+
if !reflect.DeepEqual(got, c.expect) {
71+
t.Fatalf("expected: %v, but got: %v, with inputs: %v",
72+
c.expect, got, c.inputs)
73+
}
74+
})
75+
}
76+
}
77+
5578
// 压力测试
5679
func BenchmarkSolution(b *testing.B) {
5780

0 commit comments

Comments
 (0)
0