题解
变态跳台阶
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]; } }