思路:开两个数组,一个用来存储非负数的糖果个数,一个用来存储负数的糖果个数,这两个数组都是状态数组,而不是计数数组
如果当前能够吃的种类大于现有的种类,现有的种类个数就是答案;
如果当前能够吃的种类小于等于现有的种类,则只能限制在能够吃的种类个数。
上代码:
class Solution {
public:int distributeCandies(vector<int>& candyType) {int n=candyType.size();vector<bool>st1(100010,false);vector<bool>st2(100010,false);int chi=n/2;int target=0;for(int i=0;i<n;i++){if(candyType[i]<0){st2[abs(candyType[i])]=true;}else{st1[candyType[i]]=true;}}for(int i=0;i<100010;i++){if(st1[i])target++;if(st2[i])target++;}if(chi>=target)return target;elsereturn chi;}
};