这道题和跳台阶的思想都差不多,多列举几个数就可以发现规律:
假设dp[i]表示跳到第i层的方法,则
这里又可以想到利用DP的思想建立一个数组保存前i项和:
于是化简可得,省区了dp数组,只保存sum和即可,代码如下:
public class Solution {
public int JumpFloorII(int target) {
ArrayList<Integer> sum = new ArrayList<>();
sum.add(1);
for(int i=1;i<target;i++){
sum.add(sum.get(i-1)*2+1);
}
if(target == 1) return 1;
return sum.get(target-2)+1;
}
}

京公网安备 11010502036488号