您的位置:首页 > 大数据 > 人工智能

Climbing Stairs

2013-11-12 14:24 169 查看
You are climbing a stair case. It takes n steps to reach to the top.

Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?

public class Solution {
public int climbStairs(int n) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
// s(n) = s(n - 1) + s(n - 2)
if(n < 1)return 0;
else if(n == 1) return 1;
else if(n == 2) return 2;
int first = 1;
int second = 2;
int result = 0;
for(int i = 3; i <= n; i ++){
result = first + second;
first = second;
second = result;
}
return result;
}
}


第三遍:

use only 2 constant space:

public class Solution {
public int climbStairs(int n) {
if(n < 1) return 0;
int[] result = new int[] { 1, 2 };
for(int i = 2; i < n; i ++){
int tmp = result[0] + result[1];
result[i % 2] = tmp;
}
return result[(n - 1) % 2];
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: