LeetCode 279. 完全平方数

2022-08-04  本文已影响0人  草莓桃子酪酪
题目

给你一个整数 n ,返回和为 n 的完全平方数的最少数量。完全平方数是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。

例:
输入:n = 12
输出:3
解释:12 = 4 + 4 + 4

方法:动态规划

本题为完全背包,因为完全平方数是无限的。思路类似 322. 零钱兑换

class Solution(object):
    def numSquares(self, n):
        dp = [float('INF')] * (n + 1)
        dp[0] = 0
        nums = []
        for i in range(1, n+1):
            if i**2 <= n:
                nums.append(i**2)
        for num in nums:
            for j in range(num, n + 1):
                dp[j] = min(dp[j], dp[j-num] + 1)
        return dp[n]
参考

代码相关:https://programmercarl.com/0279.%E5%AE%8C%E5%85%A8%E5%B9%B3%E6%96%B9%E6%95%B0.html

上一篇 下一篇

猜你喜欢

热点阅读