LeetCode 279. Perfect Squares
原题
Given a positive integer n, find the least number of perfect square numbers (for example,
1, 4, 9, 16, ...) which sum to n.For example, given n =
12, return3because12 = 4 + 4 + 4; given n =13, return2because13 = 4 + 9.
思路
完整代码
class Solution(object):
def numSquares(self, n):
"""
:type n: int
:rtype: int
"""
if n < 1:
return 0
square_num = []
for i in xrange(1, sys.maxint):
if i*i <= n:
square_num.append(i*i)
else:
break
dp = [sys.maxint] * (n + 1)
dp[0] = 0
for i in xrange(1, n+1):
for j in xrange(len(square_num)):
if (i >= square_num[j]):
dp[i] = min(dp[i], dp[i - square_num[j]] + 1)
return dp[n]

浙公网安备 33010602011771号