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
, return 3 because 12 = 4 + 4 + 4
; given n = 13, return 2 because 13 = 4 + 9
.
代码
class Solution {
public:
int numSquares(int n) {
vector<int> dp{0};
while(dp.size()<=n){
int m = dp.size(), nums = INT_MAX;
for(int i=1; i*i<=m; i++){
nums = min(dp[m-i*i]+1, nums);
}
dp.push_back(nums);
}
return dp[n];
}
};