1
class Solution {
2
public:
3
bool isPossible(vector<int> &nums) {
4
priority_queue<int, vector<int>, greater<int>> pq;
5
unordered_map<int, int> um;
6
for (int &num : nums) {
7
pq.push(num);
8
um[num]++;
9
}
10
queue<int> q;
11
int count = 0, prev;
12
while (!pq.empty()) {
13
if (count == 0) {
14
prev = pq.top();
15
pq.pop();
16
count++;
17
} else if (pq.top() == prev + 1) {
18
if (um[pq.top()] >= um[prev]) {
19
um[prev]--;
20
pq.pop();
21
prev += 1;
22
count++;
23
} else if (um[pq.top()] < um[prev]) {
24
um[prev]--;
25
if (count <= 2) return false;
26
while (!q.empty()) {
27
pq.push(q.front());
28
q.pop();
29
}
30
count = 0;
31
}
32
} else if (pq.top() == prev) {
33
q.push(pq.top());
34
pq.pop();
35
if (pq.empty()) {
36
if (count <= 2) return false;
37
while (!q.empty()) {
38
pq.push(q.front());
39
q.pop();
40
}
41
count = 0;
42
}
43
} else if (pq.top() > prev + 1) {
44
if (count <= 2) return false;
45

46
while (!q.empty()) {
47
pq.push(q.front());
48
q.pop();
49
}
50
count = 0;
51
}
52
}
53
if (count > 0 && count <= 2) return false;
54
return true;
55
}
56
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0