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


