12.21 2014
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) {
int len=num.size();
if(len==0 || len==1) return len;
sort(num.begin(), num.end());
int maximum=1;
int temp=1;
for(int i=1;i<len;i++){
if(num[i]-num[i-1]==1){
temp++;
}
else if(num[i]==num[i-1])
continue;
else{
if(temp>maximum)
maximum=temp;
temp=1;
}
}
if(temp>maximum)
maximum=temp;
return maximum;
}
};
主要出错地方是:
1. 有可能本身整个数组就是一个完整的consecutive sequence,所以可能不会进入max和temp比较的那个判断语句
2. 当进入判断语句时,要注意无论max是否被temp更新,temp都应该重新设置成1