13. Merge Intervals
13. Merge Intervals
Problem link :- click here
package programs;
import java.util.*;
class Interval
{
int start;
int end;
Interval()
{}
Interval(int a, int b)
{
this.start = a;
this.end = b;
}
}
public class Array__13
{
static List<Interval> mergeIntervals(List<Interval> intervals)
{
if(intervals.size() <= 1 || intervals ==null)
return intervals;
Collections.sort(intervals, Comparator.comparing((Interval x)->x.start));
List<Interval> result = new ArrayList<>();
Interval inHand = intervals.get(0);
for(Interval iterate : intervals)
{
if(inHand.end >= iterate.start)
inHand.end = Math.max(inHand.end, iterate.end);
else
{
result.add(inHand);
inHand = iterate;
}
}
result.add(inHand);
return result;
}
public static void main(String[] args)
{
List<Interval> intervals = new ArrayList<>();
intervals.add(new Interval(8, 10));
intervals.add(new Interval(1, 3));
intervals.add(new Interval(2, 6));
intervals.add(new Interval(15, 18));
System.out.println("Input : " );
printIntervals(intervals);
System.out.println("\n\n");
intervals = mergeIntervals(intervals);
System.out.println("After merging intervals :" );
printIntervals(intervals);
}
static void printIntervals(List<Interval> intervals)
{
for(Interval i : intervals)
{
System.out.print("[" + i.start + ", " + i.end + "]\t");
}
}
}
Time complexity :- O(n logn)
Space complexity :- O(n)
Comments
Post a Comment