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