279. Perfect Squares

来源:互联网 发布:活着多好知乎 编辑:程序博客网 时间:2024/06/16 11:24
  • 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.

    Credits: Special thanks to @jianchao.li.fighter for adding this
    problem and creating all test cases.

class Solution {public:    int numSquares(int n) {        vector<int> dp(n+1,n);        dp[0] = 0;        dp[1] = 1;        for(int i = 2;i <= n; ++i){            int len = sqrt(i);            for(int j = 1; j <= len; j++){                dp[i] = min(dp[i-j*j]+1,dp[i]);            }        }        return dp[n];    }};
原创粉丝点击