-----QUESTION-----
Given an unsorted array of integers, find the length of the longest consecutive elements sequence.
For example,
Given [100,4, 200, 1, 3, 2]
,
The longest consecutive elements sequence is [1,2, 3, 4]
. Return its length: 4
.
Your algorithm should run in O(n)complexity.
-----SOLUTION-----
class Solution {
public:
int longestConsecutive(vector<int> &num) {
priority_queue<int> Q;
for (int i = 0; i < num.size(); i++) {
Q.push(num[i]);
}
int ret = 1;
int maxlen = 1;
int temp = Q.top();
Q.pop();
while (!Q.empty()) {
if (temp - 1 == Q.top()) {
temp -= 1;
maxlen += 1;
} else if (temp != Q.top()) {
temp = Q.top();
maxlen = 1;
}
Q.pop();
ret = max(maxlen, ret);
}
return ret;
}
};