前往
大廳
主題

LeetCode - 575. Distribute Candies 解題心得

Not In My Back Yard | 2020-11-29 00:00:03 | 巴幣 2 | 人氣 164

題目連結:


題目意譯:
Alice 有 n 個糖果,其中第 i 個糖果的種類為 candyType[i]。Alice 注意到他的體重開始變重了,所以他去看了醫生。

醫生說 Alice 只能吃掉他的 n ÷ 2 個糖果(n 一定是一個偶數)。Alice 超喜歡他的糖果,而且他想要盡可能地吃最多種類的糖果,同時不違背醫生的建議。

給定一長度為 n 的整數陣列 candyType,回傳他如果只能吃其中的 n ÷ 2 個糖果,則最多能吃的糖果種類之值。

限制:
n == candyType.length
2 ≦ n ≦ 10 ^ 4
n 為偶數。
-10 ^ 5 ≦ candyType[i] ≦ 10 ^ 5



範例測資:
範例 1:
輸入: candyType = [1,1,2,2,3,3]
輸出: 3
解釋: Alice 只能吃 6 ÷ 2 = 3 個糖果。因為只有 3 種,所以他可以每一種都各吃一個。

範例 2:
輸入: candyType = [1,1,2,3]
輸出: 2
解釋: Alice 只能吃 4 ÷ 2 = 2 個糖果。不管他吃的種類組合是 [1,2] 、 [1,3] 還是 [2,3],他仍舊只能吃到 2 種不同的糖果類別。

範例 3:
輸入: candyType = [6,6,6,6]
輸出: 1
解釋: Alice 只能吃 4 ÷ 2 = 2 個糖果。雖然他可以吃兩個糖果,他仍只能吃到 1 種桃果。


解題思維:
因為 Alice 只能吃一半的糖果,因此如果糖果的種類 K ≧ n ÷ 2 ,則結果就只能吃到恰好 n ÷ 2 種糖果;如果 K < n ÷ 2 ,則可以吃到 K 種。

因此我們可以統計每個糖果種類的數量,這種統計可以基本上都可以藉由雜湊表(Hash Table)達成。




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

創作回應

更多創作