diff --git a/java/longest-consecutive-sequence.java b/java/longest-consecutive-sequence.java new file mode 100644 index 0000000..b0126f8 --- /dev/null +++ b/java/longest-consecutive-sequence.java @@ -0,0 +1,33 @@ +import java.util.HashMap; + +class Solution { + public int longestConsecutive(int[] nums) { + var uniqueNums = new HashMap(); + for (var num : nums) { + uniqueNums.put(num, false); + } + + // mark the possible starts + for (var num : nums) { + if (!uniqueNums.containsKey(num - 1)) { + uniqueNums.put(num, true); + } + } + + var longest = 0; + for (var num : uniqueNums.entrySet()) { + if (!num.getValue()) { + continue; + } + + var length = 1; + for (int x = num.getKey() + 1; uniqueNums.containsKey(x); ++x) { + ++length; + } + + longest = Math.max(longest, length); + } + + return longest; + } +}