面试题10- II. 青蛙跳台阶问题
题目:
解答:
1 class Solution { 2 public: 3 int numWays(int n) 4 { 5 vector<int> v(n + 1, 1); 6 for(int i = 2; i <= n; i++) 7 { 8 v[i] = (v[i - 1] + v[i - 2]) % 1000000007;//注意别忘记取余 9 } 10 return v[n];//直接返回最后一个数,即最终结果 11 } 12 };
或者:
1 public class Solution { 2 public int climbStairs(int n) { 3 if (n == 1) { 4 return 1; 5 } 6 int[] dp = new int[n + 1]; 7 dp[1] = 1; 8 dp[2] = 2; 9 for (int i = 3; i <= n; i++) { 10 dp[i] = dp[i - 1] + dp[i - 2]; 11 } 12 return dp[n]; 13 } 14 }