- 1414. 和为 K 的最少斐波那契数字数目
- 一开始就想用贪心,但是觉得贪心可能不是最短答案,也想了一个类似的dp方案(由最少的平方数组成的数),但是dp每个数是挨着的
- 重点是证明:不存在比该方法更短的数字
- O(log k) O(1)
class Solution {
public:
int findMinFibonacciNumbers(int k) {
int a = 1, b = 1;
while(b <= k){
int temp = b;
b = a + b;
a = temp;
}
int ans = 0;
while(k > 0){
int temp = a;
a = b - a;
b =temp;
while(k >= b){
k -= b;
ans++;
}
}
return ans;
}
};