LintCode 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.

样例

Given n = 12, return 3 because 12 = 4 + 4 + 4
Given n = 13, return 2 because 13 = 4 + 9

public class Solution {
    /**
     * @param n a positive integer
     * @return an integer
     */
    public int numSquares(int n) {
        // Write your code here
        int[] maxSquares = new int[n + 1];
        maxSquares[0] = 0;
        maxSquares[1] = 1;
        
        for(int i = 2;i <= n;i++){
            maxSquares[i] = Integer.MAX_VALUE;
            int sqrtNum = (int) Math.sqrt(i);
            if(sqrtNum * sqrtNum == i){
                maxSquares[i] = 1;
                continue;
            }
            
            for(int j = 1;j <= sqrtNum;j++){
                int minusNum = i - j * j;
                if(maxSquares[i] > maxSquares[minusNum] + 1){
                    maxSquares[i] = maxSquares[minusNum] + 1;
                }
            }
        }
        return maxSquares[n];
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,766评论 0 33
  • **2014真题Directions:Read the following text. Choose the be...
    又是夜半惊坐起阅读 9,789评论 0 23
  • 操场散步时偶遇的孩子和妈妈,和平常一样拿出画本随手画下。朋友说我的画风还是如此抽象,可是我画下的孩子和母亲却如此真...
    若初_M阅读 308评论 0 0
  • 冬往春至。 我想和心愛的姑娘騎在馬上,一起去看燕飛鷹舞。 爽朗的笑,肆意的跳。 一切的一切都昭示著我們在熱烈的相戀...
    沈迟阅读 101评论 0 1
  • 秋天• 2016年的秋天是多情的季节,连秋的风都像发了情的母猫。夜幕降临的时候看满地落叶,性感,妖娆。 浪子 •...
    这是一只没有刘海的喵阅读 183评论 0 1