Description:
不能有袋子是空的。
如果第 i 顆 和 第 j 顆 大理石在同一個袋子裡,那 中間的也要在同一袋。也就是說,每個袋子都要是一段連續的子陣列。
每個袋子的「成本 cost」是:該段子陣列的 第一個元素 + 最後一元素。
思考:
沒看懂題目,叫GPT幫我看了
基本上就是找頭尾和最小的陣列,但沒頭緒怎麼開始
問GPT,實際上可以換成想是"找下刀的位置",切了之後會出現頭+尾(因為中間都不算),所以就算這個頭+尾的和之後找最小跟最大的組合
ex:
[1,3,5,7,9]
切在3,5/5,7,就切成了[1,3],[5],[7,9],1 + 3 + 5 + 5 + 7 + 9,不管怎樣頭尾([0][-1])都會被算到,最大減最小會相消就直接不考慮,這情況就是3+5 + 5+7,變成尾+頭的方式去加總
因此就找這樣的pair sum,就這樣
====
根本想不到,笑死。也不是完全想不到,就是轉不過去,更像是考邏輯
今天荒廢了一天,久違的
打了好久的LOL跟打了一陣子的ender lilies,眼睛好累
快把排球少年看完了,看太多了
為了逃避放棄專案的罪惡感,所以幾乎沒用手機(為了不看社交媒體訊息),所以就一直在看電腦
一直都沒我想像中的嚴重,但就,我的罪惡感過不去吧,道德太高了,即便我已經做了那麼多了,甚至有點太多了
該找一下回歸正軌的感覺了,明天見
class Solution:
def putMarbles(self, weights: List[int], k: int) -> int:
if k == 1 or k == len(weights):
return 0
pair_sums = [weights[i] + weights[i+1] for i in range(len(weights) - 1)]
pair_sums.sort()
n = k - 1
return sum(pair_sums[-n:]) - sum(pair_sums[:n])