1. 程式人生 > >【LeetCode】 575. 分糖果

【LeetCode】 575. 分糖果

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; } };