标签:
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.
1 int longestConsecutive(vector<int> &num) 2 { 3 unordered_map<int, int> table; 4 int i, left, right, longest = 0; 5 6 for (i = 0; i < num.size(); i++) 7 table[num[i]] = i; 8 9 for (i = 0; i < num.size(); i++) 10 { 11 if (table.find(num[i]) == table.end()) 12 continue; 13 14 int tempLen = 1; 15 left = num[i] - 1; 16 while (table.find(left) != table.end()) 17 { 18 table.erase(left); 19 tempLen++; 20 left--; 21 } 22 23 right = num[i] + 1; 24 while (table.find(right) != table.end()) 25 { 26 table.erase(right); 27 tempLen++; 28 right++; 29 } 30 31 if (longest < tempLen) 32 longest = tempLen; 33 } 34 return longest; 35 }
leetcode 128. Longest Consecutive Sequence
标签:
原文地址:http://www.cnblogs.com/ym65536/p/4264053.html