Medium
Perfect Squares — Python
Full explanation · Time O(n * sqrt(n)) · Space O(n)
# Time: O(n * sqrt(n))
# Space: O(n)
class Solution(object):
_num = [0]
def numSquares(self, n):
"""
:type n: int
:rtype: int
"""
num = self._num
while len(num) <= n:
num += min(num[-i*i] for i in xrange(1, int(len(num)**0.5+1))) + 1,
return num[n]