《leetcode》:Perfect Squares

来源:互联网 发布:大屏数据 编辑:程序博客网 时间:2024/06/05 01:58

题目

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.

思路

这个题自己也没有做出来,哎,水平不够也;

思路来自于:https://segmentfault.com/a/1190000003768736

    public int numSquares(int n) {        int[] dp=new int[n+1];        Arrays.fill(dp, Integer.MAX_VALUE);        //将所有平方和的结果置为1        for(int i=0;i*i<=n;i++){            dp[i*i]=1;        }        /*         * 如果一个数x可以表示为一个任意数a加上一个平方数bxb,也就是x=a+bxb,那么能组成这个数x最少的平方数个数,         * 就是能组成a最少的平方数个数加上1(因为b*b已经是平方数了)。         * */        for(int a=0;a<n;a++){            for(int b=0;a+b*b<=n;b++){                dp[a+b*b]=Math.min(dp[a]+1, dp[a+b*b]);            }        }        return dp[n];    }
0 0
原创粉丝点击