leetcode1414. 和为 K 的最少斐波那契数字数目(贪心算法)
生活随笔
收集整理的這篇文章主要介紹了
leetcode1414. 和为 K 的最少斐波那契数字数目(贪心算法)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給你數字 k ,請你返回和為 k 的斐波那契數字的最少數目,其中,每個斐波那契數字都可以被使用多次。
斐波那契數字定義為:
F1 = 1
F2 = 1
Fn = Fn-1 + Fn-2 , 其中 n > 2 。
數據保證對于給定的 k ,一定能找到可行解。
示例 1:
輸入:k = 7
輸出:2
解釋:斐波那契數字為:1,1,2,3,5,8,13,……
對于 k = 7 ,我們可以得到 2 + 5 = 7 。
代碼
class Solution {public int findMinFibonacciNumbers(int k) {LinkedList<Integer> list = new LinkedList<>();list.add(1);int a = 1, b = 1, c = 0,res=0;while (true) {//計算出小于k的數列c = a + b;a = b;b = c;if (c > k) break;list.add(c);}int i=list.size()-1;while (k > 0)//從右到左貪心{if(list.get(i)>k) {i--;continue;}k-=list.get(i);//減去已經找到了的數字,縮小規模res++;i--;}return res;} }總結
以上是生活随笔為你收集整理的leetcode1414. 和为 K 的最少斐波那契数字数目(贪心算法)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 经常做梦梦到老公背叛自己怎么回事
- 下一篇: leetcode1497. 检查数组对是