美文网首页
279. Perfect Squares

279. Perfect Squares

作者: exialym | 来源:发表于2016-11-15 10:50 被阅读18次

    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.

    对于一个正整数,找到一组完全平方数的和等于它,且完全平方数的数目最少。

    使用一个数组,第i个元素代表对于正整数i的结果。
    对于一个数i,我们一定可以把它拆为一个完全平方数和另一个数的和:i-jj与jj。而这里的i-j*j的结果我们已经有了。对比每一种拆法,看看那个拆法的结果最小:

    res[i] = Math.min(res[i],res[i-j*j] + 1);
    

    一直遍历到n,我们就得到了结果。

    var numSquares = function(n) {
        if (n < 0)
            return 0;
        var res = [0];
        for (var i = 1;i <= n;i++) {
            for (var j = 1;j*j <= i;j++) {
                if (res[i]!==undefined) 
                    res[i] = Math.min(res[i],res[i-j*j] + 1);
                else
                    res[i] = res[i-j*j] + 1;
            }
        }
        return res.pop();
    };
    

    相关文章

      网友评论

          本文标题:279. Perfect Squares

          本文链接:https://www.haomeiwen.com/subject/sqikpttx.html