首页 > 其他 > 详细

128. Longest Consecutive Sequence (List, Queue)

时间:2015-10-03 10:32:49      阅读:198      评论:0      收藏:0      [点我收藏+]

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!