1.代码
class Solution:
def numSquares(self, n: int) -> int:
result = [0]*(n+1)
for i in range(n):
j = 1
minn = 100000000000
flag = False
while j*j<=(i+1):
if j*j == i+1:
flag = True
if result[i+1-j*j]<minn:
minn = result[i+1-j*j]
j=j+1
if flag:
result[i+1] = 1
else:
result[i+1]=minn+1
return result[n]
2.思路
运用动态规划,维护一个result数组,对于每一个数值,遍历它包含1到sqrt(n)平方项的情况。