class Solution {
public int findMinFibonacciNumbers(int k) {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(1);
int tmp = 0, res = 0;
while (tmp <= k){
int size = list.size();
tmp = list.get(size - 1) + list.get(size - 2);
list.add(tmp);
}
int tot = list.size() - 1;
k = k - list.get(tot - 1);
res++;
int size = tot - 2;
while (k != 0){
int tmp1 = list.get(size);
while (tmp1 > k){
size--;
tmp1 = list.get(size);
}
k = k - list.get(size);
res++;
}
return res;
}
}
思路:从最接近k的那个值依次计算