ETH官方钱包

前往
大廳
主題

LeetCode - 2410. Maximum Matching of Players With Trainers 解題心得

Not In My Back Yard | 2023-08-07 12:00:15 | 巴幣 0 | 人氣 138

題目連結(jié):


題目意譯:
你被給定一個(gè)索引值從 0 開始的整數(shù)陣列 players,其中 players[i] 代表著第 i 位玩家的能力值。你同時(shí)也被給定一個(gè)索引值從 0 開始的整數(shù)陣列 trainers,其中 trainers[j] 代表著第 j 位訓(xùn)練家的訓(xùn)練能力。

第 i 位玩家可以與第 j 位訓(xùn)練家相配,則代表玩家的能力值小於等於訓(xùn)練家的訓(xùn)練能力。此外,第 i 位玩家最多只能配到一位訓(xùn)練家,而第 j 位訓(xùn)練家最多只能配到一位玩家。

回傳可以滿足以上條件的最多可能的玩家與訓(xùn)練家之配對(duì)數(shù)。

限制:
1 ≦ players.length, trainers.length ≦ 10 ^ 5
1 ≦ players[i], trainers[j] ≦ 10 ^ 9



範(fàn)例測(cè)資:
範(fàn)例 1:
輸入: players = [4,7,9], trainers = [8,2,5,8]
輸出: 2
解釋:
其中一個(gè)可以形成兩個(gè)配對(duì)的方式為以下:
- players[0] 可以與 trainers[0] 配對(duì),因?yàn)?4 ≦ 8。
- players[1] 可以與 trainers[3] 配對(duì),因?yàn)?7 ≦ 8。
可以證明 2 是最多可形成的配對(duì)數(shù)。

範(fàn)例 2:
輸入: players = [1,1,1], trainers = [10]
輸出: 1
解釋:
該訓(xùn)練家可以與 3 位玩家中任一位配對(duì)。
每個(gè)玩家最多只能與一位訓(xùn)練家配對(duì),所以最大之答案為 1。
(原意如此,而正確的邏輯應(yīng)為「一位訓(xùn)練家最多只能與一位玩家配對(duì)」。)


解題思維:
把玩家和訓(xùn)練家各自按照能力值由小排到大,然後盡量用能力小的玩家去配能力小(但符合題目條件)的訓(xùn)練家。

可以看到當(dāng)玩家 i 與訓(xùn)練家 j 配對(duì)後,玩家 i + 1 不可能與訓(xùn)練家 0 ~ j 配對(duì)(要嘛能力太小配不上,要嘛已經(jīng)跟別人配過(guò)了)。所以玩家 i 只要往訓(xùn)練家 j + 1 方向找即可。

最後便可以知道最多可以湊出幾對(duì)。




此次分享到此為止,如有任何更加簡(jiǎn)潔的想法或是有說(shuō)明不清楚之地方,也煩請(qǐng)各位大大撥冗討論。

創(chuàng)作回應(yīng)

更多創(chuàng)作