91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解決leetcode中完全平方數的問題

發布時間:2022-01-17 13:37:37 來源:億速云 閱讀:143 作者:小新 欄目:大數據

這篇文章主要為大家展示了“如何解決leetcode中完全平方數的問題”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“如何解決leetcode中完全平方數的問題”這篇文章吧。

 

題目鏈接

https://leetcode-cn.com/problems/perfect-squares/

 

題目描述

給定正整數 n,找到若干個完全平方數(比如 1, 4, 9, 16, ...)使得它們的和等于 n。你需要讓組成和的完全平方數的個數最少。

示例 1:

輸入: n = 12
輸出: 3
解釋: 12 = 4 + 4 + 4.
 

示例 2:

輸入: n = 13
輸出: 2
解釋: 13 = 4 + 9.
   

解題方案

 

思路

  • 標簽:動態規劃

  • 首先初始化長度為n+1的數組dp,每個位置都為0

  • 如果n0,則結果為0

  • 對數組進行遍歷,下標為i,每次都將當前數字先更新為最大的結果,即dp[i]=i,比如i=4,最壞結果為4=1+1+1+1即為4個數字

  • 動態轉移方程為:dp[i] = MIN(dp[i], dp[i - j * j] + 1)i表示當前數字,j*j表示平方數

  • 時間復雜度:O(n*sqrt(n)),sqrt為平方根

 

代碼

  • Java版本

class Solution {
   public int numSquares(int n) {
       int[] dp = new int[n + 1]; // 默認初始化值都為0
       for (int i = 1; i <= n; i++) {
           dp[i] = i; // 最壞的情況就是每次+1
           for (int j = 1; i - j * j >= 0; j++) {
               dp[i] = Math.min(dp[i], dp[i - j * j] + 1); // 動態轉移方程
           }
       }
       return dp[n];
   }
}
 
  • JavaScript版本

/**
* @param {number} n
* @return {number}
*/
var numSquares = function(n) {
   const dp = [...Array(n+1)].map(_=>0); // 數組長度為n+1,值均為0
   for (let i = 1; i <= n; i++) {
       dp[i] = i; // 最壞的情況就是每次+1
       for (let j = 1; i - j * j >= 0; j++) {
           dp[i] = Math.min(dp[i], dp[i - j * j] + 1); // 動態轉移方程
       }
   }
   return dp[n];
};
   

畫解

如何解決leetcode中完全平方數的問題

如何解決leetcode中完全平方數的問題

如何解決leetcode中完全平方數的問題

如何解決leetcode中完全平方數的問題

如何解決leetcode中完全平方數的問題

如何解決leetcode中完全平方數的問題

如何解決leetcode中完全平方數的問題

如何解決leetcode中完全平方數的問題

如何解決leetcode中完全平方數的問題

如何解決leetcode中完全平方數的問題

如何解決leetcode中完全平方數的問題

如何解決leetcode中完全平方數的問題

如何解決leetcode中完全平方數的問題


以上是“如何解決leetcode中完全平方數的問題”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兴安盟| 台南市| 广东省| 明水县| 五莲县| 乌兰浩特市| 恭城| 周至县| 三穗县| 沅江市| 江阴市| 蒙自县| 万盛区| 汾西县| 盐亭县| 澜沧| 阜南县| 清涧县| 惠水县| 拉孜县| 博湖县| 崇仁县| 中江县| 资源县| 读书| 杭锦后旗| 固阳县| 磐石市| 大城县| 沙河市| 南木林县| 安顺市| 老河口市| 诸暨市| 淳化县| 中牟县| 新晃| 罗源县| 镇沅| 通榆县| 大安市|