Re: [閒聊] 每日LeetCode

看板Marginalman作者 (JerryChung)時間5月前 (2023/12/28 03:05), 編輯推噓0(001)
留言1則, 1人參與, 5月前最新討論串587/719 (看更多)
原本用for跟List.pop() 不過在測資3就錯了 不能邊變動邊遞迴 後來就改成while跟計算位置 沒想到一次就過 好耶 Python Solution: ---------------------------------------- class Solution: def minCost(self, colors: str, neededTime: List[int]) -> int: minimum = 0 n1 = 0 n2 = 1 while n2 < len(colors): if colors[n1] == colors[n2]: if neededTime[n1] <= neededTime[n2]: minimum += neededTime[n1] n1 = n2 else: minimum += neededTime[n2] else: n1 = n2 n2 += 1 return minimum ※ 引述《Rushia (みけねこ的鼻屎)》之銘言: : https://leetcode.com/problems/minimum-time-to-make-rope-colorful/description : 1578. Minimum Time to Make Rope Colorful : 給你一個字串陣列 colors 表示氣球顏色,neededTime[] 表示移除特定位置氣球所需的 : 時間,求出最少要花多少時間可讓所有相鄰氣球不同色。 : 思路: : 1.要對一個隊列分組,假如隊列是 aa bbb cc 就是要取: aa除了最大時間外的和 : + bbb 除了最大時間外的和 + cc ....,如果沒連續氣球就不管。 : 2.判斷前一個氣球是不是同色,如果是的話就加上耗時比較小的做為成本,並記住先前 : 耗時最大保留的氣球,如果不同色的話重置最大成本為當前耗時,遍歷到底即可。 : Java Code: : ----------------------------------------- : class Solution { : public int minCost(String colors, int[] neededTime) { : int res = 0; : int prevTime = neededTime[0]; : for (int i = 1; i < colors.length(); i++) { : if (colors.charAt(i) == colors.charAt(i - 1)) { : res += Math.min(prevTime, neededTime[i]); : prevTime = Math.max(prevTime, neededTime[i]); : } else { : prevTime = neededTime[i]; : } : } : return res; : } : } : ----------------------------------------- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.45.14.236 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1703703914.A.B5D.html

12/28 03:07, 5月前 , 1F
看了一下 每次n2都會+1 那還是用for就好了
12/28 03:07, 1F
文章代碼(AID): #1bZ7LgjT (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1bZ7LgjT (Marginalman)