Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 16, …) which sum to n.
Example 1:
Input: n = 12
Output: 3
Explanation: 12 = 4 + 4 + 4.
Example 2:
Input: n = 13
Output: 2
Explanation: 13 = 4 + 9.
func numSquares(n int) int {
res := make([]int, n+1)
res[0] = 0
for i := 1; i <= n; i++ {
res[i] = math.MaxInt32 >> 1
for j := 1; j*j <= i; j++ {
res[i] = min(res[i], res[i-j*j]+1)
}
}
return res[n]
}
func min(i,j int) int {
if i < j {
return i
}
return j
}