Re: [閒聊] 每日leetcode

作者: JIWP (JIWP)   2025-08-02 17:23:51
2561. Rearranging Fruits
思路:
用一個map紀錄每個cost的數量, 如果再basket1就+1反之就-1
並紀錄最小的cost : minCost
每個cost的數量應該是偶數
如果是奇數就回傳-1
再來用一個array來放要交換的cost
把每個cost在map中紀錄的數量/2放到array裡
假設2有4個, 那只要把2個2放到array就好
把array進行排列, 因為是求最小cost
所以只要對array的前一半進行計算
如果array[i] < minCost*2, 答案就加上array[i]
反之就加上minCost*2
會這麼計算是因為
如果我要交換costA、costB, 有兩種方法
第1種是 costA、costB直接互換 , 這樣cost會是min(costA,costB)
第2種是 costA跟minCost互換、costB再跟minCost互換, 這樣cost是2*minCost
golang code :
func minCost(basket1 []int, basket2 []int) int64 {
rec := make(map[int]int, 0)
n, ans, minNum := len(basket1), 0, math.MaxInt64
for key := range basket1 {
rec[basket1[key]]++
rec[basket2[key]]
作者: kerycheng (kk)   2025-08-02 17:24:00
求求別在卷了
作者: JIWP (JIWP)   2025-08-02 17:25:00
我的每日不能斷

Links booklink

Contact Us: admin [ a t ] ucptt.com