`

面试题 (斐波那契数列,复杂度为线性)

 
阅读更多

来自网易的一道看似简单的笔试题

题目:要求以线性时间复杂度实现斐波那契数列。

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 。。。。。。

 

众所周知的斐波那契实现方式为递归实现:

int feb1(int n) {
	t1++;
	if(n == 0 || n == 1) return 1;
	return feb1(n-1) + feb1(n-2);
}

当n=25时, 迭代次数为242785 。

关于其复杂度的解释比较麻烦,详见http://www.cnblogs.com/python27/archive/2011/12/09/2282486.html



至今看了公开课视频后,才有所感悟,采用动态规划后,其复杂度直接下降到线性,迭代次数为49 。


 

int a[1000] = {0};
int feb2(int n) {
	t2++;
	if(n == 0 || n == 1) return 1;
	if(a[n] != 0) return a[n];
	else a[n] = feb2(n-1) + feb2(n-2);
	return a[n];
}

 

  • 大小: 949 Bytes
  • 大小: 728 Bytes
分享到:
评论

相关推荐

    c 数据结构 面试题 算法 面试题

    本资源包聚焦于C语言实现的数据结构面试题,旨在帮助应聘者准备相关面试,提升对数据结构和算法的理解。 一、链表 链表是一种线性数据结构,与数组不同,它在内存中不是连续存储的。每个节点包含数据和指向下一个...

    各大公司数据结构面试题集锦

    本资料“各大公司数据结构面试题集锦”汇聚了多个知名公司的面试题,涵盖了C和C++语言,旨在帮助求职者充分准备面试。 首先,我们来了解一下基础的数据结构类型: 1. 数组:是最基本的数据结构,它将元素存储在...

    22道数据结构算法面试题.zip_22道数据结构算法面试题_算法面试题

    如斐波那契数列、背包问题、最长公共子序列等。 11. **字符串处理**:KMP算法、Rabin-Karp算法、Manacher算法等用于字符串匹配,Z函数、Boyer-Moore算法用于查找子串。 12. **位运算**:位操作在处理大数据和优化...

    01_test_斐波那契数_

    在编程和算法设计中,斐波那契数列也是一个常见的问题,经常出现在面试题和各种编程挑战中。标题"01_test_斐波那契数_"可能代表一个关于测试斐波那契数列计算的程序或者一个测试集。 斐波那契数列的定义如下:F(0) ...

    PHP面试题之算法

    在PHP的世界里,面试题是衡量开发者技能和经验的重要手段,尤其在算法这一领域,它直接反映了开发者的逻辑思维能力和问题解决能力。算法是计算机科学的基础,对于PHP开发者来说,理解并能熟练运用各种算法至关重要。...

    有史以来最全的C语言笔试面试题

    对于寻找第k小的Fabonacci质数,可以先生成Fibonacci数列,再检查每个数是否为质数,直至找到第k个。 6. 101个硬币的重量问题: 利用无砝码天平,通过分组策略可以在两次称量后确定假币的重量。一种方法是将硬币...

    C_C 面试题集锦.pdf

    更高效的算法可能涉及到字符串匹配、哈希或后缀数组等技术,能够以线性或接近线性的时间复杂度解决问题。 ### Fab数列与质数 **知识点**:结合数学序列与质数判断的编程题。 **解释**:此题要求找出特定条件下的...

    百度、谷歌、腾讯、微软数据结构算法面试题

    以上内容只是对题目中涉及知识点的初步解析,实际的面试题可能需要更深入的解答,包括具体算法的实现细节、复杂度分析、最优解策略等。对于IT行业的求职者,扎实的数据结构和算法基础至关重要,这直接影响到他们在...

    常见算法笔试或面试题

    "常见算法笔试或面试题"这个主题涵盖了从基础到高级的各种算法问题,旨在帮助学习者和求职者提升解决问题的能力,为他们的职业生涯做好准备。以下是根据描述和标签所涉及的一些关键知识点的详细解析: 1. **排序...

    JAVA经典算法面试39题及答案

    "JAVA经典算法面试39题及答案"这个资源为求职者提供了宝贵的复习材料,涵盖了多种常见的算法问题,旨在帮助提升面试表现。 1. **排序算法**:在Java中,基础的排序算法如冒泡排序、插入排序、选择排序、快速排序、...

    C语言笔试面试题大全.doc

    这个问题可以通过滑动窗口或动态规划等算法解决,复杂度通常是线性的。 5. **斐波那契数列与质数**: - 斐波那契数列(如1, 1, 2, 3, 5, 8, 13...)是递归定义的数列,每一项是前两项的和。 - 斐波那契质数是同时...

    程序员面试试题

    3. **递归与动态规划**:掌握递归的基本概念,如阶乘、斐波那契数列等,以及动态规划解决复杂问题的技巧,例如背包问题、最短路径问题。 4. **设计模式**:单例模式、工厂模式、观察者模式、装饰器模式等23种设计...

    Python自动化测试笔试面试题精选

    例如,二叉树的遍历(前序、中序、后序)、斐波那契数列等都可能作为面试题。 分治策略则是将大问题分解为小问题分别解决,再合并结果。在处理数组或列表时,例如快速排序、归并排序等都是分治思想的应用。例如,...

    算法常用面试题.zip

    3. **递归与分治**:递归是解决复杂问题的一种强大工具,如斐波那契数列、汉诺塔等。分治策略是将大问题分解为小问题,如快速排序、归并排序就是典型的分治应用。 4. **图论与树**:树结构如二叉搜索树、AVL树、...

    不错的数据结构面试题

    4. **动态规划**:背包问题、最长公共子序列、斐波那契数列等,理解动态规划的核心思想——状态转移方程。 5. **递归与回溯**:八皇后问题、N皇后问题、迷宫问题等,掌握递归的原理和回溯法在解决组合优化问题中的...

    前端面试题之算法题集.zip

    这“前端面试题之算法题集.zip”文件显然包含了一系列与前端面试相关的算法题目,旨在帮助求职者准备面试,同时也为开发者提升自己的算法能力提供了宝贵的资源。以下是根据标题、描述和标签提炼出的一些关键知识点:...

    codility_lessons_codility面试题python_源码.zip

    《Python解构Codility面试题:深度解析与实践》 在软件开发领域,尤其是在Python编程中,Codility是一项广受欢迎的在线评估平台,用于测试候选人的编程技能和算法理解。"codility_lessons_codility面试题python_...

    算法大全-面试题-数据结构.pdf.zip_算法

    《算法大全-面试题-数据结构.pdf》是一个深入探讨算法和数据结构的资源,对于程序员,尤其是准备面试的开发者来说,这是一个极其宝贵的学习材料。它涵盖了算法和数据结构的基础概念,以及在实际问题中的应用,旨在...

    前端面试题之算法剑指offer题集.zip

    10. **计数与概率**:计数问题如组合、排列、鸽巢原理等,概率问题如蒙特卡洛方法,这些在某些特定的面试题中也会出现。 在准备前端面试时,不仅要理解和掌握这些算法,还需要通过实际编写代码来锻炼编程技巧。同时...

    java面试逻辑题

    面试官可能要求你在给定的条件下推断程序的执行流程,例如:编写一段代码来实现Fibonacci数列,理解递归的工作原理和避免无限循环。 3. **复杂度分析**:面试者需要掌握时间复杂度和空间复杂度的概念,能够估算算法...

Global site tag (gtag.js) - Google Analytics