给定一个未排序的整数数组,找出最长连续序列的长度。
class Solution {
public:
/**
* @param nums: A list of integers
* @return an integer
*/
int longestConsecutive(vector<int> &num) {
// write you code here
unordered_map<int,int>m;
int n=num.size();
int res=0;
for(int i=0;i<n;i++){
if(m[num[i]]) continue;
m[num[i]]=m[num[i]+m[num[i]+1]]=m[num[i]-m[num[i]-1]]=m[num[i]+m[num[i]+1]]+m[num[i]-m[num[i]-1]]+1;
res=max(res,m[num[i]]);
}
return res;
}
};
样例
给出数组[100, 4, 200, 1, 3, 2],这个最长的连续序列是 [1, 2, 3, 4],返回所求长度 4
说明
要求你的算法复杂度为O(n)