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

Popular posts from this blog

4.Sort an array of 0's, 1's & 2's.

1. Reverse

3. Height of Binary tree