【LeetCode】 575. 分糖果
阿新 • • 發佈:2018-11-03
1.題目
給定一個偶數長度的陣列,其中不同的數字代表著不同種類的糖果,每一個數字代表一個糖果。你需要把這些糖果平均分給一個弟弟和一個妹妹。返回妹妹可以獲得的最大糖果的種類數。
2.思路
建立map存放不同型別的糖果,得出map長度即可
3.程式碼
int distributeCandies(vector<int>& candies){
map<int,int>mp;
for(int i=0;i<candies.size();i++){
mp[candies[i]]=1;
}
int sum=mp.size ();
if(sum>candies.size()/2)
return candies.size()/2;
else
return sum;
}
4.優秀案例
class Solution {
public:
int distributeCandies(vector<int>& candies) {
if(candies.size()<1)
return 0;
bool kinds[200005] = {0};
int kindnum = 0;
for(int i = 0; i<candies.size(); i++ ){
int idx = candies[i] + 100000;
if(!kinds[idx]){
kinds[idx] = 1;
kindnum ++;
}
}
if(kindnum >= candies.size()/2)
return candies.size()/2;
return kindnum;
}
};