LeetCode: Longest Consecutive Sequence
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 shold run in O (N) Complexity.
// Https://oj.leetcode.com/problems/longest-consecutive-sequence/// Author: Chao Zeng // Date: 2015-3-30class Solution {public: int longestConsecutive (vector
& Num) {map
Mp; const int NUM = 100; // an offset is added to the array element to ensure the validity of the array subscript. int length = num. size (); for (int I = 0; I <length; I ++) {mp [num [I] + NUM] = 1 ;}int ans; int res = 0; for (int I = 0; I <length; I ++) {ans = 1; if (mp. count (num [I] + NUM) {int left = num [I] + NUM-1; while (mp. count (left) & mp [left]! = 0) {mp [left --] = 0; ans ++;} int right = num [I] + NUM + 1; while (mp. count (right) & mp [right]! = 0) {mp [right ++] = 0; ans ++ ;}}if (res <ans) {res = ans ;}} return res ;}};