您的位置:首页 > 产品设计 > UI/UE

128. Longest Consecutive Sequence (List, Queue)

2015-10-03 09:28 609 查看
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.

class Solution {
public:
int longestConsecutive(vector<int> &num) {
priority_queue<int> Q; //priority queue is in descending order by default
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;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: