0
点赞
收藏
分享

微信扫一扫

[贪心]leetcode1414:和为 K 的最少斐波那契数字数目(medium)

倚然君 2022-02-03 阅读 26

题目:
在这里插入图片描述


题解:

代码如下:

class Solution {
public:
    // 思路:贪心地选择不超过k的最大fib数字
    int findMinFibonacciNumbers(int k) {
        vector<int> f;
        f.push_back(1);
        // 在f中添加所有小于等于k的斐波那契数
        for(int a=1,b=1,c;a+b<=k;a=b,b=c){
            c=a+b;
            f.push_back(c);
        }
        int res=0;
        // 贪心地选取所有小于等于k的最大斐波那契数
        for(int i=f.size()-1;i>=0&&k>0;i--){
            int x=f[i];
            if(k>=x)k-=x,res++;
        }
        return res;
    }
};
举报

相关推荐

0 条评论