70. Climbing Stairs
2017-03-18 15:02
134 查看
You are climbing a stair case. It takes nsteps to reach to the top.
Each time you can either climb 1 or 2steps. In how many distinct ways can you climb to the top?
Note: Given n will be a positive integer.
翻译:你正在爬楼梯盒。它需要n步到达顶部。每次你可以爬1或2步。你能爬到顶部有多少不同的方式?注意:给定n将是一个正整数。
分析:这个问题似乎是一个动态规划。首先可以看出,
如果n =0,则路的数量应该为零。
如果n = 1,那么只有爬上楼梯的方法。
如果n ==2,那么有两种方式爬楼梯。
当n==3时,先走一层的话,方法数为n=2,先走两层的话,方法数为n=1;可以依此类推,
给定若干楼梯n,他的走的步数就是n-1和n-2的步数和。可以发现规律,他就是斐波那契数列(但是n=1和n=2不都是1)。所以题目就很好写了,代码如下:
public class Solution {
public int climbStairs(int n) {
if(n==0) return 0;
if(n==1) return 1;
if(n==2) return 2;
int first=1;
int second=2;
int step=0;
for(int i=2;i<n;i++){
step=first+second;
first=second;
second=step;
}
return step;
}
}
Each time you can either climb 1 or 2steps. In how many distinct ways can you climb to the top?
Note: Given n will be a positive integer.
翻译:你正在爬楼梯盒。它需要n步到达顶部。每次你可以爬1或2步。你能爬到顶部有多少不同的方式?注意:给定n将是一个正整数。
分析:这个问题似乎是一个动态规划。首先可以看出,
如果n =0,则路的数量应该为零。
如果n = 1,那么只有爬上楼梯的方法。
如果n ==2,那么有两种方式爬楼梯。
当n==3时,先走一层的话,方法数为n=2,先走两层的话,方法数为n=1;可以依此类推,
给定若干楼梯n,他的走的步数就是n-1和n-2的步数和。可以发现规律,他就是斐波那契数列(但是n=1和n=2不都是1)。所以题目就很好写了,代码如下:
public class Solution {
public int climbStairs(int n) {
if(n==0) return 0;
if(n==1) return 1;
if(n==2) return 2;
int first=1;
int second=2;
int step=0;
for(int i=2;i<n;i++){
step=first+second;
first=second;
second=step;
}
return step;
}
}
相关文章推荐
- LeetCode --- 70. Climbing Stairs
- Leetcode:70. Climbing Stairs(JAVA)
- 70. Climbing Stairs
- 70. Climbing Stairs
- leetcode 70. Climbing Stairs
- LeetCode 70. Climbing Stairs
- 70. Climbing Stairs Add to List
- 70. Climbing Stairs
- 70. Climbing Stairs(Easy)
- LeetCode-70. Climbing Stairs (Java)
- 70. Climbing Stairs
- Dynamic Programming:70. Climbing Stairs
- 70. Climbing Stairs
- leetcode 70. Climbing Stairs
- 【LeetCode】70. Climbing Stairs
- 70. Climbing Stairs
- [Leetcode]70. Climbing Stairs
- LeetCode笔记:70. Climbing Stairs
- 70. Climbing Stairs (爬楼梯)
- Leetcode-70. Climbing Stairs