题目
题目链接:https://leetcode-cn.com/problems/find-the-minimum-number-of-fibonacci-numbers-whose-sum-is-k/
题目解析:
就是利用最少的斐波那契数字去变成K,题目很简单
代码
class Solution {
public int findMinFibonacciNumbers(int k) {
//创建数组来存放斐波那契数字
int[] arr = new int[1001];
//将第一个和第二个数字初始化
arr[0]=1;
arr[1]=1;
//从第一个开始遍历
int j=1;
//用于保存有多少个数字
int ans=0;
//循环遍历制造出k值之下的数字
while(j<arr.length) {
if(arr[j]+arr[j-1]>k)
break;
arr[j+1] = arr[j]+arr[j-1];
j++;
}
//从最大值开始遍历,找出最少的数字凑成K
for(int i=j;i>=0;i--){
if(k>=arr[i]) {
k-=arr[i];
ans++;
}
}
return ans;
}
}