LeetCode 1414 和为K的最小斐波那契数字数目[贪心] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 1414 和为K的最小斐波那契数字数目[贪心] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。


解题思路:
首先,把遍历到K之前的斐波那契数列表示出来,接着从最大的开始,把合适的数与K相减,直到K为0,统计减去的次数,即为最小次数,代码如下:

class Solution 
public:
    int findMinFibonacciNumbers(int k) 
        vector<int> count;
        count.push_back(1);
        int a = 1, b = 0;
        for(int i = 0; a + b <= k; i ++) 
            int c = a + b;
            count.push_back(c);
            b = a;
            a = c;
        
        int ans = 0;
        for(int i = count.size() - 1; i >= 0 && k > 0; i --) 
            if(k - count[i] >= 0) 
                k -= count[i];
                ans ++;
            
        
        return ans;
    
;

以上是关于LeetCode 1414 和为K的最小斐波那契数字数目[贪心] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 2000. 反转单词前缀 / 1414. 和为 K 的最少斐波那契数字数目(贪心证明) / 1725. 可以形成最大正方形的矩形数目

[LeetCode] 509. 斐波那契数

leetCode第509题——斐波那契数

Leetcode刷题Python509. 斐波那契数

Leetcode 32509:最长有效括号-斐波那契数

Leetcode 32509:最长有效括号-斐波那契数