// Longest Consecutive Sequence - https://leetcode.com/problems/longest-consecutive-sequence/description/
class Solution {
// Sorting
// Time Complexity: O(nlogn)
// Space Complexity: O(1)
// public int longestConsecutive(int[] nums) {
// if(nums.length == 0) {
// return 0;
// }
// int maxCount = 1;
// Arrays.sort(nums);
// for(int i = 0; i < nums.length - 1; i++) {
// int count = 1;
// while(i < nums.length - 1
// && (nums[i] + 1 == nums[i + 1]
// || nums[i] == nums[i + 1])) {
// if ( i < nums.length - 1 && nums[i] == nums[i + 1]) {
// i++;
// continue;
// }
// count++;
// i++;
// }
// if (count > maxCount) {
// maxCount = count;
// }
// }
// return maxCount;
// }
// HashSet
// Time Complexity: O(n)
// Space Complexity: O(n)
public int longestConsecutive(int[] nums) {
if(nums.length == 0) {
return 0;
}
Set set = new HashSet<>();
for(int num: nums) {
set.add(num);
}
int maxCount = 1;
for(int num: set) {
if(!set.contains(num - 1)) {
int count = 1;
while(set.contains(num + count)) {
count++;
}
maxCount = Math.max(count, maxCount);
}
}
return maxCount;
}
}