128 最长连续序列
给定一个未排序的整数数组,找出最长连续序列的长度。
要求算法的时间复杂度为 O(n)。
示例:
输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释: 最长连续序列是[1, 2, 3, 4]。它的长度为 4。
int longestConsecutive(vector<int>& nums) { unordered_map<int,bool> map; for(auto &i:nums) map[i]=false; int longest=0; for(auto &i:nums) { if(map[i]) continue; int len=1; map[i]=true; for(int j=i+1; map.find(j)!=map.end();++j) { map[j]=true; ++len; } for(int j=i-1;map.find(j)!=map.end();--j) { map[j]=true; ++len; } longest=max(len,longest); } return longest; }