标签:
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
.
时间复杂度要求o(n) 不能用排序 就用map来记录元素,然后顺序扫描一遍元素,对每个未使用的元素左右扩张。
1 class Solution { 2 public: 3 int longestConsecutive(vector<int>& nums) { 4 unordered_map<int,bool> used; 5 6 for(auto i:nums) used[i]=false; 7 8 int longest=0; 9 10 for(auto i:nums) 11 { 12 if(used[i]) continue; 13 14 int length=1; 15 used[i]=true; 16 17 //向增长的方向开始 18 19 for(int j=i+1;used.find(j)!=used.end();j++) 20 { 21 length++; 22 used[j]=true; 23 } 24 25 //向减少的方向开始 26 for(int j=i-1;used.find(j)!=used.end();j--) 27 { 28 length++; 29 used[j]=true; 30 } 31 32 longest=max(longest,length); 33 34 } 35 36 return longest; 37 } 38 };
LeetCode:Longest Consecutive Sequence
标签:
原文地址:http://www.cnblogs.com/xiaoying1245970347/p/4816734.html