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