Skip to content

Commit 62861ed

Browse files
committed
#70 DP climbing stairs
1 parent 5d2e66d commit 62861ed

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

main/src/array/LC_70_ClimbingStairs.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,4 +87,19 @@ public int climbStairs_4Week(int n) {
8787
}
8888
return p3;
8989
}
90+
91+
/**
92+
* 动态规划 dynamic programing
93+
* 拆分子问题,求解每个子问题的答案: f(n) = f(n-1) + f(n-2)
94+
*/
95+
public int climbStairs_DP(int n) {
96+
if (n <= 2) return n;
97+
int p1 = 1, p2 = 2, p3 = 3;
98+
for (int i = 3; i <= n; i++) {
99+
p3 = p1 + p2;
100+
p1 = p2;
101+
p2 = p3;
102+
}
103+
return p3;
104+
}
90105
}

main/test/array/LC_70_ClimbingStairsTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,10 @@ public void climbStairs_twice_4Week() {
3535
assertEquals(5, climbingStairs.climbStairs_4Week(4));
3636
assertEquals(3, climbingStairs.climbStairs_4Week(3));
3737
}
38+
39+
@Test
40+
public void climbStairs_twice_DP() {
41+
assertEquals(5, climbingStairs.climbStairs_DP(4));
42+
assertEquals(3, climbingStairs.climbStairs_DP(3));
43+
}
3844
}

0 commit comments

Comments
 (0)