From 1ae0cb4b893605830589580c1a5a75169e60e77f Mon Sep 17 00:00:00 2001 From: Matej Focko Date: Sun, 4 Aug 2024 23:19:43 +0200 Subject: [PATCH] =?UTF-8?q?java:=20add=20=C2=AB128.=20Longest=20Consecutiv?= =?UTF-8?q?e=20Sequence=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Matej Focko --- java/longest-consecutive-sequence.java | 33 ++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 java/longest-consecutive-sequence.java 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; + } +}