题解 | #跳台阶扩展问题#

跳台阶扩展问题

http://www.nowcoder.com/practice/22243d016f6b47f2a6928b4313c85387

动态规划初级题
Floor(n) = Floor(n-1) + Floor(n-2) + ... + Floor(1) + 1

用一个数组来存储每一个台阶的方法数,这样就可以不用每次计算Floor(n-1)或者Floor(n-1)。
然后咱们顺序地从Floor(1)算起,将结果存到methodArray中;
再算Floor(2),从methodArray取出Floor(1)结果再加1;
同理,继续Floor(3)、Floor(4)算上去,直到Floor(n-1)、 Floor(n)。

methodArray的意义在于存储结果,避免重复算Floor(m)。

public class Solution {

    private int[] methodArray = new int[10000];

    public int jumpFloorII(int target) {
        for (int i = 0; i <= target; i++) {
            for (int j = i - 1; j > 0; j--) {
                methodArray[i] += methodArray[j];
            }
            methodArray[i]++;
        }

        return methodArray[target];
    }
}
全部评论
既然只需要前一个结果,那这个数组其实没必要,用temp就行了
点赞 回复 分享
发布于 2021-09-20 21:50

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务