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; } };
128. Longest Consecutive Sequence (List, Queue)
原文:http://www.cnblogs.com/qionglouyuyu/p/4853053.html