Re: [閒聊] 每日leetcode

作者: JIWP (JIWP)   2025-03-31 23:31:49
2551. Put Marbles in Bags
其實題目的意思就是把weights切成k的subarray
並且求出這些subarray頭尾總和的最大值和最小值相減
從題目可以知道所有subarray總和一定會包含weights[0]和weights[n-1]
所以差異就是在其他元素
要把矩陣分成k等分就表示要切k-1刀
假設切在weights[i]那weights[i+1]就是下一個subarray的頭
所以這題可以想成
求出所有weights[i]+weights[i+1](i = 0 ~ n-1)
然後前k-1大的組合 - 前k-1小的組合就是答案
golang code :
func putMarbles(weights []int, k int) int64 {
n := len(weights)
arr := make([]int, n-1)
for i := 0; i < n-1; i++ {
arr[i] = weights[i] + weights[i+1]
}
slices.Sort(arr)
ans := 0
for i := 0; i < k-1; i++ {
ans += (arr[n-2-i] - arr[i])
}
return int64(ans)
}
作者: Rushia (みけねこ的鼻屎)   2025-03-31 23:37:00
你好優秀

Links booklink

Contact Us: admin [ a t ] ucptt.com