LintCode 查找斐波纳契数列中第 N 个数
2016-03-23 14:17
417 查看
所谓的斐波纳契数列是指:
前2个数是 0 和 1 。
第 i 个数是第 i-1 个数和第i-2 个数的和。
斐波纳契数列的前10个数字是:
给定
给定
给定
前2个数是 0 和 1 。
第 i 个数是第 i-1 个数和第i-2 个数的和。
斐波纳契数列的前10个数字是:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ...
给定
1,返回
0
给定
2,返回
1
给定
10,返回
34
题目就是斐波那契数算法的变形。关于斐波那契数,首先想到递归
class Solution{ public: /** * @param n: an integer * @return an integer f(n) */ int fibonacci(int n) { // write your code here if ( n == 1 ) { return 0; } else if ( n == 2 || n == 3 ) { return 1; } /*else { return fibonacci(n-1) + fibonacci(n-2); } };
但是递归太耗费时间,结果超时。
再换成非递归形式
<pre name="code" class="cpp">class Solution{ public: /** * @param n: an integer * @return an integer f(n) */ int fibonacci(int n) { // write your code here if ( n == 1 ) { return 0; } else if ( n == 2 || n == 3 ) { return 1; } int s1 = 1; int s2 = 1; int i = 4; int sum = 0; while (i <= n) { sum = s1 + s2; s1 = s2; s2 = sum; i++; } return sum; } };
相关文章推荐
- Surface Shader
- RabbitMQ监控(5)——OpenCharts展示
- 将 Shiro 作为应用的权限基础 四:shiro的配置说明
- Centos7下搭建LAMP平台环境
- Spinner使用方法
- UITableView 取得点击的cell
- 二进制安装mysql的shell脚本
- iOS中一些概念的理解:delegate,block,notification
- HttpClient使用详解
- Android笔记:invalidate()和postInvalidate() 的区别及使用
- android Broadcast学习
- Misson Planner增加mavlink消息并显示在status中
- Linux常用命令
- xml做的layout 布局浏览不了问题解决。
- 从Theano到Lasagne:基于Python的深度学习的框架和库
- C动态内存分配
- JS自定义属性兼容
- 连接MYSQL的时候报错(找不到请求的.net framework data provider。可能没有安装
- 添加商品动画
- 求任意一天是星期几