W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
給定一個(gè)偶數(shù)長(zhǎng)度的數(shù)組,其中不同的數(shù)字代表著不同種類的糖果,每一個(gè)數(shù)字代表一個(gè)糖果。你需要把這些糖果平均分給一個(gè)弟弟和一個(gè)妹妹。返回妹妹可以獲得的最大糖果的種類數(shù)。
示例 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ù)最多。
注意:
數(shù)組的長(zhǎng)度為[2, 10,000],并且確定為偶數(shù)。 數(shù)組中數(shù)字的大小在范圍[-100,000, 100,000]內(nèi)。
不可重復(fù)插入,于是依次插入,尋找共有最大幾個(gè)不同元素,與length/2,求最小
class Solution {
public int distributeCandies(int[] candies) {
HashSet <Integer> set = new HashSet < > ();
for (int candy : candies){
set.add(candy);
}
return Math.min(set.size(),candies.length/2);
}
}
時(shí)間復(fù)雜度:O(n)。整個(gè)candiescandiescandies 數(shù)組只遍歷一次。這里,n表示 candies 數(shù)組的大小。 空間復(fù)雜度:O(n),在最壞的情況下,set 的大小為 n。
同理在Python中
class Solution:
def distributeCandies(self, candies: List[int]) -> int:
return len(set(candies)) if len(set(candies))<=len(candies)//2 else len(candies)//2
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: