/*
* @lc app=leetcode id=128 lang=cpp
*
* [128] Longest Consecutive Sequence
*
* https://leetcode.com/problems/longest-consecutive-sequence/description/
*
* algorithms
* Hard (42.52%)
* Likes: 2119
* Dislikes: 106
* Total Accepted: 226.6K
* Total Submissions: 532.5K
* Testcase Example: '[100,4,200,1,3,2]'
*
* Given an unsorted array of integers, find the length of the longest
* consecutive elements sequence.
*
* Your algorithm should run in O(n) complexity.
*
* Example:
*
*
* Input: [100, 4, 200, 1, 3, 2]
* Output: 4
* Explanation: The longest consecutive elements sequence is [1, 2, 3, 4].
* Therefore its length is 4.
*
*
*/
class Solution {
public:
int longestConsecutive(vector<int>& nums) {
unordered_set<int> s(nums.begin(), nums.end());
int res = 0;
for (int i = 0; i < nums.size(); ++i) {
int len = 1;
if (!s.count(nums[i] - 1)) {
// 找到一个boundary。
int num = nums[i] + 1;
while (s.count(num)) {
++len;
++num;
}
}
res = max(res, len);
}
return res;
}
};