Longest Consecutive Sequence

来源:互联网 发布:飞翔快递软件 编辑:程序博客网 时间:2024/05/16 06:52

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.

思路1: 排序聚合,然后遍历只需要和前一个元素比较,O(nlgn)+O(n)

思路2: 类似无向图连通性问题,对于每个未被mark的值,分别左右探测,累计长度,并mark经过的值。

int longestConsecutive(vector<int> &num) {unordered_map<int,bool> used;for(auto &e :num) used[e]=false;int maxLen =1;for(auto &e : used) {if(e.second) continue;int len=1;for(int x = e.first-1;used.find(x)!=used.end();--x){len++;used[x]=true;}for(int x = e.first+1;used.find(x)!=used.end();++x){len++;used[x]=true;}maxLen = max(maxLen,len);}return maxLen;}




0 0
原创粉丝点击