LeetCode 279 完全平方數

2021-09-11 03:23:07 字數 885 閱讀 7196

題目描述

提示幫助

提交記錄社群討論閱讀解答

隨機一題

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

示例 1:

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

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

dp[0] = 1;

for(int i = 1;i < square.size();i++)

}return dp[n];

}};

解題思路:特意嘗試一下dp的解法,不知道有沒有更好的dp轉移方程,這樣感覺用時有點多。將平方數存入乙個vector中,每乙個數的初始值都是i,即有 i 個 1 相加。然後遍歷square陣列(小於n的),對於dp[j - square[i]] + dp[square[i]]是目前利用該平方數可以獲得的最小值,例如:dp[5] = 5,當square[i] = 4的時候,那麼dp[5] = dp[1] + dp[4] = 2,dp[8] = dp[4] + dp[4] = 2。

所以dp轉移方程dp[j] = min(dp[j - square[i]] + dp[square[i]],dp[j])

Leetcode 279 完全平方數

給定正整數 n,找到若干個完全平方數 比如1,4,9,16,使得它們的和等於n。你需要讓組成和的完全平方數的個數最少。示例 1 輸入 n 12輸出 3解釋 12 4 4 4.示例 2 輸入 n 13輸出 2解釋 13 4 9.解題思路 比較容易想到的方法是bfs 廣度優先搜尋 如果知道四平方和的話就...

Leetcode279 完全平方數

給定正整數 n,找到若干個完全平方數 比如 1,4,9,16,使得它們的和等於 n。你需要讓組成和的完全平方數的個數最少。示例 1 輸入 n 12 輸出 3 解釋 12 4 4 4.示例 2 輸入 n 13 輸出 2 解釋 13 4 9.解法1 bfs public intnumsquares in...

LeetCode 279 完全平方數

279.完全平方數 給定正整數 n,找到若干個完全平方數 比如1,4,9,16,使得它們的和等於n。你需要讓組成和的完全平方數的個數最少。示例 1 輸入 n 12輸出 3解釋 12 4 4 4.示例 2 輸入 n 13輸出 2解釋 13 4 9.解題思路 對問題建模,將整個問題轉化為乙個圖論問題。從...