LeetCode Solutions
128. Longest Consecutive Sequence
Time: $O(n)$ Space: $O(n)$
class Solution {
public:
int longestConsecutive(vector<int>& nums) {
int ans = 0;
unordered_set<int> seen{begin(nums), end(nums)};
for (int num : nums) {
// Num is the start of a sequence
if (seen.count(num - 1))
continue;
int length = 1;
while (seen.count(++num))
++length;
ans = max(ans, length);
}
return ans;
}
};
class Solution {
public int longestConsecutive(int[] nums) {
int ans = 0;
Set<Integer> seen = Arrays.stream(nums).boxed().collect(Collectors.toSet());
for (int num : nums) {
// Num is the start of a sequence
if (seen.contains(num - 1))
continue;
int length = 1;
while (seen.contains(++num))
++length;
ans = Math.max(ans, length);
}
return ans;
}
}
class Solution:
def longestConsecutive(self, nums: List[int]) -> int:
ans = 0
seen = set(nums)
for num in nums:
if num - 1 in seen:
continue
length = 0
while num in seen:
num += 1
length += 1
ans = max(ans, length)
return ans