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.
本题利用了map的key是排序的知识,将array插入到map中,然后在统计最长的lenth。
int longestConsecutive(vector<int> &num) { //C++
map<int,int> numMap;
for(int i = 0; i < num.size(); i++)
numMap.insert(make_pair(num[i],num[i]));
int len = 1;
int tmp = 1;
map<int,int>::iterator iter = numMap.begin();
int prenum = iter->first;
iter++;
for(; iter!=numMap.end(); iter++)
{
if(iter->first - prenum == 1)
tmp++;
else
{
if(tmp > len)
len = tmp;
tmp = 1;
}
prenum = iter->first;
}
len = (len > tmp)? len:tmp;
return len;
}原文:http://blog.csdn.net/chenlei0630/article/details/41523373