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.
class Solution{ public: int numSquares(int n){ vector<int> memo(n+1,n); if(n == 1) return 1; memo[0] = 0; memo[1] = 1; for(int i = 2; i <= n; i++){ for(int j = 1; j*j <= i; j++){ memo[i] = min(memo[i],memo[i-j*j]+1); } } return memo[n]; } };
参考:
怕什么真理无穷,进一寸有一寸的欢喜。---胡适