zoukankan      html  css  js  c++  java
  • Java实现 LeetCode 279 完全平方数

    279. 完全平方数

    给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。

    示例 1:

    输入: n = 12
    输出: 3
    解释: 12 = 4 + 4 + 4.
    示例 2:

    输入: n = 13
    输出: 2
    解释: 13 = 4 + 9.

    PS:
    动态规划在数学面前一文不值

    任何正整数都可以拆分成不超过4个数的平方和 —> 答案只可能是1,2,3,4

    如果一个数最少可以拆成4个数的平方和,则这个数还满足 n = (4^a)*(8b+7)
    因此可以先看这个数是否满足上述公式,如果不满足,答案就是1,2,3了

    如果这个数本来就是某个数的平方,那么答案就是1,否则答案就只剩2,3了

    如果答案是2,即n=a2+b2,那么我们可以枚举a,来验证,如果验证通过则答案是2
    只能是3

    class Solution {
        public int numSquares(int n) {
                while(n%4==0)
                {
                    n/=4;
                }
                if(n%8==7)
                    return 4;
            
                int a=0;
                while((a*a)<=n)
                {
                    int b=(int)Math.pow((n-a*a),0.5);
                        if(a*a+b*b==n)
                        {
                            if(a!=0&&b!=0)
                            {
                                return 2;
                            }    
                            
                            else
                            {
                                return 1;
                            }
                        }
                    a++;
                }                 
                return 3;
        }
    }
    

    动态规划:

    class Solution {
          public int numSquares(int n) {
            int[] dp = new int[n+1];
            for(int i = 1; i <= n; i++){
                dp[i] = Integer.MAX_VALUE;
            }
            for(int i = 1; i <= n; i++){
                for(int j = 1; j*j <= i; j++){
                    if(i >= j*j){
                        dp[i] = Math.min(dp[i],dp[i-j*j]+1);
                    }
                }
            }
            return dp[n];
        }
    }
    
  • 相关阅读:
    java 21
    maven POM.xml 标签详解
    shell sed 替代1
    lua的table库中的常用函数总结
    Lua字符串及模式匹配
    lua文件读写
    qt添加lua支持
    关于c调用lua 对‘luaL_newstate()’未定义的引用的问题解决办法
    Lua开发环境
    linux安装lua相关编译报错
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13075929.html
Copyright © 2011-2022 走看看