LeetCode 279. 完全平方数(Easy)

在这里插入图片描述
题目链接

题解

  1. 完全平方数

思路

在这里插入图片描述
在这里插入图片描述

代码

class Solution:
    ### 0127 动态规划(4640 ms,14.9 MB)
    def numSquares(self, n: int) -> int:
        # 对于每一个n,凑成n我们仅需要的最大的完全平方数不会超过n本身
        squares = [i ** 2 for i in range(0, int(math.sqrt(n))+1)]

        # dp[i]表示数i需要的最少完全平方数的个数,初始化为无穷大
        dp = [float('inf')] * (n + 1)
        dp[0] = 0 # 初始化数0需要0个完全平方数

        for i in range(1, n+1):
            for square in squares:
                # 若当前数i小于此时的完全平方数,则停止循环
                if i < square:
                    break

                # dp[i] or i去掉square之后加上一个数
                dp[i] = min(dp[i], dp[i-square] + 1)
        
        return dp[-1]
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页