Leetcode:(Python)(Array) candies_intake

許博淳
數據共筆
Published in
Mar 7, 2023

題目連結: https://leetcode.com/problems/distribute-candies/description/

題意說明:

  • 醫師建議 Alice只能吃她擁有糖果樹量的一半,例如有8顆就只能吃4顆
  • 糖果數量永遠是偶數
  • 數字代表糖果種類
  • Alice 想盡可能吃越多種類的糖果越好

請問 Alice最多能吃幾種糖果

這一題的範例給得很不錯,其實也就兩種情況

  1. 當糖果種類的數量 > 糖果數量的一半: 糖果數量的一半
  2. 當糖果種類的數量 <= 糖果數量的一半: 糖果種類的數量

初始想法

  • 用 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

參考他人解法

解法連結: https://leetcode.com/problems/distribute-candies/solutions/2947653/python-3-lines-faster-than-98-93-simple-explained/?languageTags=python

  • 用 min() 取代 if
  • 用 //2 取代 int()

使用以上兩者其實對 runtime影響不大,但是 memory多數時候是最佳的。

擷取一個 runtime and memory皆優良的結果作紀念。

--

--