题解

变态跳台阶

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

图片说明
从台阶只有1个到有n个时,每次需要跳多少次我们都可以记录下来,创建一个n+1维数组counts,下标表示台阶个数,counts[0] = 0, counts[1] = 1,从2开始,每个值等于它前面所有数再加1。但是这样做会造成重复的运算,和额外的内存开销,我们可以只创建一个2维数组,第一个数表示前n-1项的和,第二个数表示第n项的值:

public class Solution {
    public int JumpFloorII(int target) {
        int[] counts = new int[2];
        counts[0] = 1;
        counts[1] = 1;
        for (int i = 2; i <= target; i++) {
            int temp = counts[0] + 1;
            counts[0] += temp;
            counts[1] = temp;
        }
        return counts[1];
    }
}
全部评论

相关推荐

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