題目
難度:★☆☆☆☆
類型:數(shù)學(xué),益智
給定一個偶數(shù)長度的數(shù)組蚓哩,其中不同的數(shù)字代表著不同種類的糖果构灸,每一個數(shù)字代表一個糖果。你需要把這些糖果平均分給一個弟弟和一個妹妹岸梨。返回妹妹可以獲得的最大糖果的種類數(shù)喜颁。
注意
數(shù)組的長度為[2, 10,000],并且確定為偶數(shù)曹阔。
數(shù)組中數(shù)字的大小在范圍[-100,000, 100,000]內(nèi)半开。
示例
示例 1:
輸入: candies = [1,1,2,2,3,3]
輸出: 3
解析: 一共有三種種類的糖果,每一種都有兩個赃份。
最優(yōu)分配方案:妹妹獲得[1,2,3],弟弟也獲得[1,2,3]寂拆。這樣使妹妹獲得糖果的種類數(shù)最多奢米。
示例 2 :
輸入: candies = [1,1,2,3]
輸出: 2
解析: 妹妹獲得糖果[2,3],弟弟獲得糖果[1,1],妹妹有兩種不同的糖果纠永,弟弟只有一種鬓长。這樣使得妹妹可以獲得的糖果種類數(shù)最多。
解答
一個前提:弟弟和妹妹獲得糖果個數(shù)相同渺蒿。
分兩種情況:
如果糖的種類數(shù)小于糖總數(shù)的一半痢士,那么可以把所有種類的糖果都分給妹妹至少一塊,妹妹獲得糖果最大種類數(shù)為糖果種類數(shù)茂装;
如果糖的種類不小于糖總數(shù)的一半怠蹂,由于給妹妹的糖至多為糖總數(shù)的一半,那么妹妹手中的糖種類可以各不相同少态,最大種類數(shù)即為糖總數(shù)的一半城侧;
以上兩種情況取最小值即可。
class Solution:
def distributeCandies(self, candies):
return min(len(set(candies)), len(candies) // 2)
如有疑問或建議彼妻,歡迎評論區(qū)留言~