zoukankan      html  css  js  c++  java
  • LeetCode:完全平方数【279】【DP】

    LeetCode:完全平方数【279】【DP】

    题目描述

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

    示例 1:

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

    示例 2:

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

    题目分析

      动态规划真的是笔试过程中必不可少的题型。

      如果我们想知道n=15的方法数,我们可以转换为求n=14的方法数、n=11的方法数、n=6的方法数,然后他们中间取最小值+1,即是15的方法数。

      同样,n=14的方法数,是n=13、n=10、n=5中的最小值+1....这样我们可以使用动态规划来避免重复计算

      

    Java题解

    class Solution {
        public int numSquares(int n) {
            if(n<=0)
                return 0;
            int[] cntPerfectSquares = new int[n+1];
            Arrays.fill(cntPerfectSquares,Integer.MAX_VALUE);
            cntPerfectSquares[0]=0;
            for(int i=0;i<=n;i++)
            {
                for(int j=1;j*j<=i;j++)
                {
                    cntPerfectSquares[i]=Math.min(cntPerfectSquares[i],cntPerfectSquares[i-j*j]+1);
                }
            }
            return cntPerfectSquares[n];
        }
    }
    

      

  • 相关阅读:
    Kafka——相关概念及核心配置说明
    Kafak——Kafka-Manager安装部署
    Kafka——集群安裝部署(自带Zookeeper)
    ElasticSearch日志删除命令
    QML ListView json
    Qt websocket
    Tickets
    3.docker容器的数据卷
    2.docker命令
    1.安装和初始化docker
  • 原文地址:https://www.cnblogs.com/MrSaver/p/9669185.html
Copyright © 2011-2022 走看看