70. Climbing Stairs
来源:互联网 发布:golang http 模板 编辑:程序博客网 时间:2024/03/29 16:15
算法1:分析:dp[i]为走到第i个台阶不同的走法,那么dp[i] = dp[i-1] + dp[i-2], 很容易看出来这是斐波那契数列。注意在求解斐波那契数列有关问题时,要注意问题中的斐波那契数从几开始,本题目中,从1和2开始。代码如下:
class Solution {public: int climbStairs(int n) { int fbn1 = 0, fbn2 = 1; for(int i = 1; i <= n; i++) { int tmp = fbn1 + fbn2; fbn1 = fbn2; fbn2 = tmp; } return fbn2; }};
算法2:还可以根据斐波那契数列的通项公式来求,对于斐波那契数列 1 1 2 3 5 8 13 21,通项公式如下,这个方法有个缺陷是:使用了浮点数,但是浮点数精度有限, oj中n应该不大,所以可以通过(当 N>93 时 第N个数的值超过64位无符号整数可表示的范围。
代码如下:
class Solution {public: int climbStairs(int n) { //根据斐波那契数列的通项公式 double a = 1/sqrt(5); double b = (1 + sqrt(5)) / 2; double c = (1 - sqrt(5)) / 2; return (int)round(a * (pow(b, n+1) - pow(c, n+1)));//注意这里是n+1 }};
0 0
- [LeetCode]70.Climbing Stairs
- 70.Climbing Stairs
- LeetCode --- 70. Climbing Stairs
- [Leetcode] 70. Climbing Stairs
- [leetcode] 70.Climbing Stairs
- 70.Climbing Stairs
- 70. Climbing Stairs
- 70.Climbing Stairs
- 70. Climbing Stairs
- [leetCode]70. Climbing Stairs
- 70. Climbing Stairs
- 70. Climbing Stairs LeetCode
- 70. Climbing Stairs
- 70. Climbing Stairs
- 70. Climbing Stairs
- [LeetCode]70. Climbing Stairs
- 【LeetCode】70. Climbing Stairs
- 70. Climbing Stairs
- angularJS--多个控制器之间的数据共享
- Linux学习笔记02之文件管理
- python 面向对象高级特性
- repair windows ntfs part on ubuntu
- LeetCode242——Valid Anagram
- 70. Climbing Stairs
- 为Unreal4制作插件
- 【Objective-C编程】Objective-C的基本数据类型
- webconfig配置详细
- esxi的时间同步问题
- 架构设计:负载均衡层设计方案(8)——负载均衡层总结上篇
- java中文件的绝对路径,相对路径和抽象路径
- 递归函数的非递归化
- wordcount