659. Split Array into Consecutive Subsequences
这题还是很有意思的。
class Solution {
public:
bool isPossible(vector<int>& nums) {
unordered_map<int, int> dict, temp;//dict存储还没有分配的数字,temp存储已经ok的所有序列的下一个可添加的数字
for (int num : nums)
dict[num]++;
for (int num : nums) {
if (dict[num] == 0)
continue;
else if (temp[num] != 0) {
dict[num]--;
temp[num]--;
temp[num+1]++;
} else if (dict[num+1] > 0 && dict[num+2] > 0) {
dict[num]--;
dict[num+1]--;
dict[num+2]--;
temp[num+3]++;
} else
return false;
}
return true;
}
};