Re: [閒聊] 每日LeetCode

看板Marginalman作者 (為寺川愛美瘋狂打call)時間2月前 (2024/02/09 15:38), 編輯推噓0(001)
留言1則, 1人參與, 2月前最新討論串667/719 (看更多)
※ 引述《JerryChungYC (JerryChung)》之銘言: : https://leetcode.com/problems/perfect-squares : ※ 引述《DJYOSHITAKA (franchouchouISBEST)》之銘言: : : 279. Perfect Squares : : n必定能由一組可重複的正整數的平方和所組成 : : 找出最少個數的數組能透過平方和組出n : : 回傳個數 : Python3 code: : ---------------------------------------------------- : class Solution: : def numSquares(self, n: int) -> int: : sqs = [] : dp = [(n + 1) for _ in range(n + 1)] : dp[0] = 0 : for i in range(1, n + 1): : if (i ** 0.5) == int(i ** 0.5): : sqs.append(i) : dp[i] = 1 : continue : cost = n + 1 : for c in sqs: : if i >= c: : cost = min(dp[i - c] + 1, cost) : if cost == 2: : break : dp[i] = cost : return dp[n] if dp[n] != n + 1 else -1 : ----------------------------------------------------- : 不會動態規劃 求教 :( : 話說這解1776ms 怎麼Python3最快有46ms的 全列出來嗎 我的好慢 155ms== class Solution: dp = {} def numSquares(self, n: int) -> int: if res := self.dp.get(n): return res res = n for i in range(int(n**0.5), 1, -1): res = min(res, self.numSquares(n - i ** 2) + 1) if res == 1: break self.dp[n] = res return res 這個要改iteration有點麻煩 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.10.26.67 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1707464286.A.3FE.html

02/09 15:39, 2月前 , 1F
剩我沒刷leecode了
02/09 15:39, 1F
文章代碼(AID): #1bnTPUF- (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1bnTPUF- (Marginalman)