- 分割数组为连续子序列
给你一个按升序排序的整数数组 num(可能包含重复数字),请你将它们分割成一个或多个长度至少为 3 的子序列,其中每个子序列都由连续整数组成。
如果可以完成上述分割,则返回 true ;否则,返回 false 。
class Solution {
public:
bool isPossible(vector<int>& nums) {
unordered_map<int, int> nc, tail;
for (auto num : nums) {
nc[num]++;
}
for (auto num : nums) {
if (nc[num] == 0) {
continue;
} else if (nc[num] > 0 && tail[num-1] > 0) {
nc[num]--;
tail[num-1]--;
tail[num]++;
} else if (nc[num] > 0 && nc[num+1] > 0 && nc[num+2] > 0) {
nc[num]--;
nc[num+1]--;
nc[num+2]--;
tail[num+2]++;
} else {
return false;
}
}
return true;
}
};