查找斐波纳契数列中第 N 个数。
所谓的斐波纳契数列是指:
- 前2个数是 0 和 1 。
- 第 i 个数是第 i-1 个数和第i-2 个数的和。
斐波纳契数列的前10个数字是:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ...
class Solution {
/**
* @param n: an integer
* @return an integer f(n)
*/
public int fibonacci(int n) {
// write your code here
/* 递归 超时,时间有限制,不能通过测评
// 测试提示:你的代码运行时间超过了限制,检查你的时间复杂度。
// TLE通常是由死循环造成的,思考一下你的时间复杂度是否是最优的。
if(n>=1){
if(n==1||n==2){
return n-1;
}else{
return fibonacci(n-1)+fibonacci(n-2);
}
}else{
return -1;
}
*/
//枚举法 效率高
if(n<=0){
return -1;
}else if(n==1||n==2){
return n-1;
}else{
int s1=0;
int s2=1;
int sum=0;
for(int i=3;i<=n;i++){
sum=s1+s2;
s1=s2;
s2=sum;
}
return sum;
}
}
}
相关推荐
在这个“编程类lintcode项目实例”中,我们可以深入学习和实践各种编程技巧,尤其是字符串处理和递归算法。下面将详细讨论这两个核心知识点。 **字符串处理**在计算机科学中占据了重要地位,尤其是在编程面试中。...
在这个"Lintcode1-40题的答案"中,我们可以预期找到的是前40道Lintcode算法题目的解决方案,每道题目通常会附有注释以解释解题思路和关键步骤。这些题目覆盖了各种基础和进阶的算法知识,对于理解和掌握算法有着重要...
递归是函数或方法调用自身的技术,常用于解决分治策略的问题,如快速排序、斐波那契数列等。在LintCode的训练中,递归是解决问题的重要工具。 7. **动态规划**: 动态规划是一种通过将复杂问题分解为更小的子问题...
5. **递归与回溯**:递归是解决复杂问题的一种常见方法,如斐波那契数列、八皇后问题等。回溯则常用于解决组合优化问题,如全排列、N皇后问题等。 6. **位运算**:在某些优化算法或者处理二进制问题时,位运算是...
在这个名为"Algorithm-LintCode.zip"的压缩包中,包含了289个LintCode平台上的算法问题的C++解决方案,是学习和实践算法的宝贵资源。 1. **基础算法**:这些题目涵盖了基础的排序(如冒泡排序、插入排序、快速排序...
leetcode 剑指 Offer 50 道经典算法题视频讲解 「剑指 Offer」是何海涛写的一本算法面试书,书中精选了 50 道常见的程序员面试题,这些题目偏向中低难度...斐波那契数列 - - leetcode 509 | lintcode 366 二进制中 1 的
LeetCode和Lintcode是两个非常受欢迎的在线编程挑战平台,主要针对准备技术面试,特别是针对数据结构和算法的练习。这两个平台提供了大量的编程题目,帮助开发者提升编程技能和解决实际问题的能力。本压缩包文件...
数学问题包括计算阶乘、斐波那契数列、逆波兰表达式的计算、丑数(只包含质因数2、3、5的数)的生成、2的幂次的计算等。处理数学问题时,通常需要对数学规律有深刻理解,如动态规划或递归的思想。 海量数据处理则是...
在IT领域,特别是软件开发和数据结构算法的学习中,LeetCode和LintCode是两个非常知名的在线平台。它们提供了丰富的编程题目,旨在帮助开发者提升算法能力、掌握数据结构,并且为面试准备提供实战训练。本篇文章将...
例如,Fibonacci数列、背包问题、最长公共子序列等。 4. **贪心策略**:在一些优化问题中,贪心算法能够得到满意的结果。Python的高效执行能力使得贪心策略易于实现,如最小生成树、活动选择等。 5. **图论与网络...
3. **动态规划**:解决具有重叠子问题和最优子结构的问题,如斐波那契数列、最长公共子序列等。 4. **回溯法**:用于在解空间树中搜索所有可能解,例如八皇后问题、N皇后问题、数独求解等。 5. **图论**:包括最小...
许多复杂的算法问题可以通过递归或分治策略简化,例如斐波那契数列、归并排序、快速排序等。 12. **字符串处理**: C++中的`std::string`类提供了丰富的字符串操作方法,如连接、比较、查找子串等。 在实际的...
动态规划问题如斐波那契数列、背包问题;图论问题如最短路径、拓扑排序;字符串处理问题如KMP算法、Z算法等。每个子文件夹代表一个特定的算法或问题类型,每个Java文件则对应一个问题的具体解决方案。 在学习和实践...
在本项目中,作者用它来记录自己的算法学习过程,主要关注于LeetCode和LintCode这两个在线平台上的问题。LeetCode提供了各种算法题目,旨在提升编程技能和解决实际问题的能力,而LintCode则是一个类似的平台,提供...
2. **动态规划**:背包问题、最长公共子序列、斐波那契数列等。 3. **贪心算法**:最小生成树、活动安排等。 4. **回溯法和深度优先搜索**:八皇后问题、图的遍历等。 5. **滑动窗口**:最大子数组和、最常出现的...