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