剑指offer-JZ7

斐波那契数列

https://www.nowcoder.com/practice/c6c7742f5ba7442aada113136ddea0c3?tpId=13&tqId=11160&rp=1&ru=%2Fta%2Fcoding-interviews&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking&tab=answerKey

c++
考查斐波那契数列的知识,
F[I]=F[I-1]+F[I-2];
F[0]=0; F[1]=1;
因此直接遍历,时间图片说明 ,空间图片说明 动态规划:

class Solution {
public:
    int Fibonacci(int n) {
        int temp1=0, temp2=1,ans=0;
        if (n==0){
            return 0;
        }else if(n==1){
            return 1;
        }else{
            for(int i=1; i<n; i++){
                ans = temp1 + temp2;
                temp1 = temp2;
                temp2 = ans;
            } 
            return ans;
        }


    }
};

也可以直接利用数组,因为给定n<39,直接给出。

class Solution {
public:
    int Fibonacci(int n) {
        int f[40]={0};
        f[0]=0;
        f[1]=1;
        for (int i=2; i<40; i++){
            f[i]=f[i-1]+f[i-2];
        }
        return f[n];
    }
};

简化一点的 递归思路,时间图片说明 ,空间大:

class Solution {
public:
    int Fibonacci(int n) {
        if(n==0 || n==1){
            return n;
        }
        return Fibonacci(n-1)+Fibonacci(n-2);
    }
};

保存结果 + 递归;这样,不需要重复计算。

class Solution {
public:
    int Fib(int n, vector<int> &dp){
         if(n==0 || n==1) return n;
         if (dp[n] != -1) return dp[n];

         return dp[n] = Fib(n-1, dp) + Fib(n-2, dp);
    }
    int Fibonacci(int n) {
       vector<int> dp(45,-1);
        return Fib(n, dp);
    }
};
全部评论

相关推荐

合适才能收到offe...:招聘上写这些态度傲慢的就别继续招呼了,你会发现hr和面试官挺神的,本来求职艰难就可能影响一些心态了,你去这种公司面试的话,整个心态会炸的。
点赞 评论 收藏
分享
03-03 23:12
已编辑
北京邮电大学 Java
书海为家:我来给一点点小建议,因为毕竟还在学校不像工作几年的老鸟有丰富的项目经验,面试官在面试在校生的时候更关注咱们同学的做事逻辑和思路,所以最好在简历中描述下自己做过项目的完整过程,比如需求怎么来的,你对需求的解读,你想到的解决办法,遇到困难如何找人求助,最终项目做成了什么程度,你从中收获了哪些技能,你有什么感悟。
你的简历改到第几版了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务