Skip to content
On this page

Split Array into Consecutive Subsequences

leetcode 659. Split Array into Consecutive Subsequences

Intuition

Store how many time a num+1000 exist in nums. We know that to form a vaild subsequence it has to be three nums, so if there're possibly a new sequence, we add it to queue. If there should be one or multiple subsequence going to end, check if it contains three elements, otherwise return false.

Code

cpp
bool isPossible(vector<int>& nums) {
	vector<int> sub(3000, false);
	for(int i : nums) sub[i+1000]++;
	int count = 0, last = 0;
	queue<int> q;
	for(int i = 0; i < 2004; i++) {
		while (sub[i] > q.size()) q.push(i);

		while (sub[i] < q.size()) {
			if(q.front()+2 < i) q.pop();
			else return false;
		}

	}
	return true;
}

Complexity Analysis

Time: O(n)

Space: O(n)

Released under the MIT License.