LeetCode70 Climbing Stairs 解题报告
2018-01-12 16:30
417 查看
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?
Note: Given n will be a positive integer.
example:
题意是给一个步数n, 表示需要n个步数才能爬到顶,每次只能走一步或者两步,问一共有多少种走法。
本题的求解还是比较简单的,一看到题目,就可以非常简单的想到递归的走法,即走到n步的时候,其实是n-1和n-2步决定的,所以可以得到推导公式C
=C[n-1]+C[n-2] (n>=2)。
需要注意的是C[0]=1,C[1]=1。
递归代码如下:
这种解法比较简单,但是超时,多了很多重复的计算,其实根据推导公式可以非常简单的写出一个循环,直接得到n的走法
Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
Note: Given n will be a positive integer.
example:
Input: 2 Output: 2 Explanation: There are two ways to climb to the top. 1. 1 step + 1 step 2. 2 steps
题意是给一个步数n, 表示需要n个步数才能爬到顶,每次只能走一步或者两步,问一共有多少种走法。
本题的求解还是比较简单的,一看到题目,就可以非常简单的想到递归的走法,即走到n步的时候,其实是n-1和n-2步决定的,所以可以得到推导公式C
=C[n-1]+C[n-2] (n>=2)。
需要注意的是C[0]=1,C[1]=1。
递归代码如下:
void climbStairs_helper(int n, int &re) { if(n==0) { re++; return ; } if(n<0) { return ; } climbStairs_helper(n-1, re); climbStairs_helper(n-2, re); } int climbStairs(int n) { int re=0; if(n==0||n==1) { re=1; return re; } climbStairs_helper(n, re); return re; }
这种解法比较简单,但是超时,多了很多重复的计算,其实根据推导公式可以非常简单的写出一个循环,直接得到n的走法
int climbStairs2(int n) { if(n==0||n==1) { return 1; } vector<int> re{n+1,0}; re[0]=1; re[1]=1; for(int i=2;i<n+1;i++) { re[i]=re[i-1]+re[i-2]; } return re ; }
相关文章推荐
- Climbing Stairs | leetcode 70 【Java解题报告】
- 【LeetCode】Climbing Stairs 解题报告
- 【LeetCode】Balanced Binary Tree 解题报告
- leetcode解题报告(21):Majority Element
- LeetCode 89: Gray Code解题报告
- [Leetcode] 749. Contain Virus 解题报告
- [leetcode] 252. Meeting Rooms 解题报告
- [Leetcode] 752. Open the Lock 解题报告
- [Leetcode] 754. Reach a Number 解题报告
- LeetCode 513. Find Bottom Left Tree Value 解题报告
- [leetcode] 301. Remove Invalid Parentheses 解题报告
- [Leetcode] 532. K-diff Pairs in an Array 解题报告
- [leetcode] 27. Remove Element 解题报告
- [Leetcode] 539. Minimum Time Difference 解题报告
- [Leetcode] 540. Single Element in a Sorted Array 解题报告
- Leetcode 135 Candy 解题报告
- 【LeetCode】442.Find All Duplicates in an Array解题报告
- [Leetcode] 717. 1-bit and 2-bit Characters 解题报告
- [LeetCode]Populating Next Right Pointers in Each Node II, 解题报告
- [LeetCode]Number of Digit One,解题报告