1414. Find the Minimum Number of Fibonacci Numbers Whose Sum Is K
https://leetcode.com/contest/biweekly-contest-24/problems/find-the-minimum-number-of-fibonacci-numbers-whose-sum-is-k/
这一题,乍一看跟Fibonacci相关,很让人摸不着头脑。因为你无法确定一个数是否可以任由fibonacci数组成。可是事实上,当我们得知这就是一道coin change的题时,我知道从最大fib数开始,采用greedy 方式,就能得到minimum 解。Code 很直白
class Solution:
def getFib(self,k):
arr = [1,1]
while True:
n = arr[-1] + arr[-2]
if n > k:
return arr
arr.append(n)
return [-1]
def findMinFibonacciNumbers(self, k: int) -> int:
fibs = self.getFib(k)
i = len(fibs)-1
cnt = 0
while k > 0:
cnt += k // fibs[i]
k = k % fibs[i]
i-=1
return cnt
下面是GeeksforGeeks的解法:
https://www.geeksforgeeks.org/minimum-fibonacci-terms-sum-equal-k/
Last updated
Was this helpful?