首页 > 其他 > 详细

Longest Consecutive Sequence

时间:2015-07-08 22:13:34      阅读:219      评论:0      收藏:0      [点我收藏+]

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:

 1 class Solution {
 2 public:
 3     int longestConsecutive(vector<int>& num) {
 4         map<int,bool> used;
 5     for(vector<int>::const_iterator iter=num.begin();iter!=num.end();iter++)
 6     {
 7         used[*iter]=false;
 8     }
 9     int longest=0;
10     for(vector<int>::const_iterator  ptr=num.begin();ptr!=num.end();ptr++)
11     {
12         if(used[*ptr])
13             continue;
14         int max_length=1;
15         used[*ptr]=true;
16         for(int j=*ptr+1;used.find(j)!=used.end();j++)
17         {
18             used[j]=true;
19             max_length++;
20         }
21         for(int j=*ptr-1;used.find(j)!=used.end();j--)
22         {
23             used[j]=true;
24             max_length++;
25         }
26         longest=max(longest,max_length);
27     }
28 
29     return longest;
30     }
31 };

技术分享

Longest Consecutive Sequence

原文:http://www.cnblogs.com/riden/p/4631444.html

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