Leetcode 279. 完全平方数
给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。
Code
def numSquares(self, n):
# write your code here
dp=[[0] for _ in range(n+1)]#dp[i]表示i最少被分成几个完全平方数之和
dp[0]=0#初始化
for i in range(1,n+1,1):
j=1
dp[i]=float('inf')
while j*j<=i:
if dp[i-j*j]+1<dp[i]
dp[i] = min(dp[i], dp[i-j*j] + 1)
j=j+1
return dp[n]
想法
- dp[i-jj]+1<dp[i]即dp[i-jj]<=dp[i],判定其是否可以组成和的完s全平方数,如果大于其必然不可以。
本文详细解析了LeetCode279题“完全平方数”的解决方案,通过动态规划算法求解给定正整数n所能分解的最少完全平方数个数。文中给出了清晰的代码实现及核心思路。
&spm=1001.2101.3001.5002&articleId=110237274&d=1&t=3&u=65465bfd51554b3eadf7ed0565066977)
248

被折叠的 条评论
为什么被折叠?



