LeetCode 1414. 和为 K 的最少斐波那契数字数目题解

# 1414. 和为 K 的最少斐波那契数字数目题解

题目来源:1414. 和为 K 的最少斐波那契数字数目/

2022.02.03每日一题

法一:递归

求解斐波那契数列的可以参考题目:509. 斐波那契数

题解导航:509.斐波那契数题解 / 509.斐波那契数题解

这道题目可以使用贪心的思想来进行求解,要寻找到组成该数字最少数目的斐波那契数列,所以只要寻找到小于等于 k 且距离其最近的那个斐波那契数字

具体代码以及注解如下

class Solution {
    public int findMinFibonacciNumbers(int k) {
        // 当 k 等于 0 时,可以跳出递归
        if (k == 0) {
            return 0;
        }
        
        int a = 1, b = 1;
        while (b <= k) {
            int temp = a + b;
            a = b;
            b = temp;
        }
        return 1 + findMinFibonacciNumbers(k - a);
    }
}
class Solution {
    public int findMinFibonacciNumbers(int k) {
        // 当 k 等于 0 时,可以跳出递归
        if (k == 0) {
            return 0;
        }
        
        int a = 1, b = 1;
        while (b <= k) {
            int temp = a + b;
            a = b;
            b = temp;
        }
        return 1 + findMinFibonacciNumbers(k - a);
    }
}

你可能感兴趣的:(LeetCode,每日一题题解,leetcode,贪心算法,java,c++,递归算法)