应该是微软的一道编程题,用map就可以解决,但是要消息不要减去已有的数字。
class Solution {
public:
// 每个set有k个数字并且是连续的,
bool isPossibleDivide(vector<int>& nums, int k) {
if(nums.size()%k!=0){
return false;
}
map<int, int> cnt;
for(int i=0;i<nums.size();i++){
cnt[nums[i]] ++;
}
for(auto it=cnt.begin();it!=cnt.end();it++){
if(it->second==0){continue;}
int start = it->first; //数字[start, start+3]的次数减1
int num = it->second;
for(int i=start;i<=start+k-1;i++){
cnt[i] = cnt[i]-num;
if (cnt[i]<0){return false;}
}
}
return true;
}
};