From b8ac4b1cf038849091f84848474344462fd4d685 Mon Sep 17 00:00:00 2001 From: Sukshan01 <101926757+Sukshan01@users.noreply.github.com> Date: Tue, 3 Oct 2023 18:43:08 +0530 Subject: [PATCH] Added code for Merge Intervals Problem --- Java/MergeIntervals.java | 55 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 Java/MergeIntervals.java diff --git a/Java/MergeIntervals.java b/Java/MergeIntervals.java new file mode 100644 index 0000000..85dcbac --- /dev/null +++ b/Java/MergeIntervals.java @@ -0,0 +1,55 @@ +class Solution { + public int[][] merge(int[][] intervals) { + + int n = intervals.length; + + if(n <= 1){ + return intervals; + } + + // Sort Intervals --> based on start time + + Arrays.sort(intervals, (a, b) -> { + + + + if(a[0] != b[0]){ + return a[0] - b[0]; + } + else{ + return a[1] - b[1]; + } + + }); + + List mergedIntervals = new ArrayList<>(); + + int [] currInterval = intervals[0]; + + for(int i = 1; i < n; i++){ + if(intervals[i][0] <= currInterval[1]){ + // overlapping interval --> update the end time + + currInterval[1] = Math.max(currInterval[1], intervals[i][1]); + + } + + else{ + // non overlapping interval + + mergedIntervals.add(currInterval); + currInterval = intervals[i]; + + } + + } + + + mergedIntervals.add(currInterval); + + return mergedIntervals.toArray(new int[mergedIntervals.size()][]); + + + + } +}