-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path279-NumSquares.py
More file actions
30 lines (26 loc) · 819 Bytes
/
279-NumSquares.py
File metadata and controls
30 lines (26 loc) · 819 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# Python3
class Solution:
def numSquares(self, n: int) -> int:
nums = list()
for i in range(1, 101):
if i**2 > n:
break
nums.append(i**2)
dp = [n+1]*(n+1)
dp[0] = 0
for i in range(n+1):
for num in nums:
if i - num < 0:
continue
dp[i] = min(dp[i], dp[i - num] + 1)
return dp[n] if dp[n] != n+1 else -1
class Solution:
def numSquares(self, n: int) -> int:
dp = [0]*(n+1) # 默认初始化值都为0
for i in range(n+1):
dp[i] = i # 最坏的情况就是每次+1
j = 1
while i - j*j >= 0:
dp[i] = min(dp[i], dp[i - j*j] + 1)
j += 1
return dp[n]