public class Solution {
public int jumpFloorII(int target) {
if (target <= 0) return 0;
int[] dp = new int[target + 1];
dp[1] = 1;
for (int i = 2; i <= target; i++) {
int sum = 1;
for (int j = 1; j <= i; j++) {
sum += dp[j];
}
dp[i] = sum;
}
return dp[target];
}
}
// 或者数学公式:f(n)=2^(n+1)
public int JumpFloorII(int target) {
return (int) Math.pow(2, target - 1);
}
解题思想:动态规划,由已知求未知,dp保存前面算出的值,后面是前面每个台阶累积和。或者直接数学公式得出:f(n)=2^(n+1)

京公网安备 11010502036488号