Re: [閒聊] 每日LeetCode

看板Marginalman作者 (みけねこ的鼻屎)時間3年前 (2022/11/22 11:42), 3年前編輯推噓5(500)
留言5則, 5人參與, 3年前最新討論串113/719 (看更多)
279. Perfect Squares 給你一個數字n,求出相加等於n的數字之最小數量(每個數字要是完全平方數)。 Example: Input: n = 12 Output: 3 Explanation: 12 = 4 + 4 + 4.(最小) 12 = 9 + 1 + 1 + 1 12 = .... Input: n = 13 Output: 2 Explanation: 13 = 4 + 9. 思路: 1.這題比較偏數學,可以用動態規劃解,dp[i]表示組成數字i的最小數量。 2.因為對於一個任意數字n,他都可以被表示成n個1組成,所以dp的所有元素初始 化為i(最大組成i的完全平方數數量)。 3.然後從數字0開始一個一個的填表,外層迴圈表示dp的每一格,內層迴圈表示所 有的平方數(1開始),如果滿足小於外層迴圈的值的時候就比較之前的dp[i],和取 現在的 dp[i -j*j] + 1 哪個小,不斷的更新表格。 4.返回dp[n] Java Code: ---------------------------------------- class Solution { public int numSquares(int n) { int[] dp = new int[n + 1]; for (int i = 0; i <= n; i++) { dp[i] = i; for (int j = 1; i >= j*j; j++) { dp[i] = Math.min(dp[i], dp[i - j*j] + 1); } } return dp[n]; } } ---------------------------------------- https://i.imgur.com/Kx3qqfz.jpg
-- https://i.imgur.com/YPBHGGE.jpg
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.28.191 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1669088553.A.254.html

11/22 11:43, 3年前 , 1F
大師
11/22 11:43, 1F

11/22 11:44, 3年前 , 2F
大師
11/22 11:44, 2F

11/22 11:45, 3年前 , 3F
大師
11/22 11:45, 3F
※ 編輯: Rushia (36.231.28.191 臺灣), 11/22/2022 11:49:53

11/22 11:48, 3年前 , 4F
大師
11/22 11:48, 4F

11/22 16:27, 3年前 , 5F
Python 只能吃 TLE,哭啊
11/22 16:27, 5F
文章代碼(AID): #1ZV4Kf9K (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1ZV4Kf9K (Marginalman)