leetcode-5373-和为K的最少斐波那契数字数目

题目描述:

 

 

 

 解法:贪心,每次减去<k的最大斐波那契数

class Solution:
    def findMinFibonacciNumbers(self, k: int) -> int:
        fib = [1, 1]
        while fib[-1] <= k:
            fib.append(fib[-1] + fib[-2])
        ans = 0
        while k > 0 and fib[-1] > 1:
            if k >= fib[-1]:
                ans += 1
                k -= fib[-1]
            else:
                fib.pop()
        return ans + k

 

posted @ 2020-04-19 10:06  oldby  阅读(205)  评论(0编辑  收藏  举报