題目連結: https://leetcode.com/problems/distribute-candies/description/
題意說明:
- 醫師建議 Alice只能吃她擁有糖果樹量的一半,例如有8顆就只能吃4顆
- 糖果數量永遠是偶數
- 數字代表糖果種類
- Alice 想盡可能吃越多種類的糖果越好
請問 Alice最多能吃幾種糖果
這一題的範例給得很不錯,其實也就兩種情況
- 當糖果種類的數量 > 糖果數量的一半: 糖果數量的一半
- 當糖果種類的數量 <= 糖果數量的一半: 糖果種類的數量
初始想法
- 用 Set取出不重複的數字,即糖果的種類
- 取出糖果數量的一半數值
- 用 if比較前兩者大小
class Solution:
def distributeCandies(self, candyType: List[int]) -> int:
kinds_of_candies = len(set(candyType))
candies_intake = int(len(candyType)/2)
if kinds_of_candies > candies_intake:
return candies_intake
else:
return kinds_of_candies
參考他人解法
- 用 min() 取代 if
- 用 //2 取代 int()
使用以上兩者其實對 runtime影響不大,但是 memory多數時候是最佳的。
擷取一個 runtime and memory皆優良的結果作紀念。