Given a 2D array of size Nx2 which contains a set of ‘N’ intervals. Each interval contains a starting point and an ending point. You need to find the size of the maximal set of mutually disjoint intervals.
Two sets [a,b] and [c,d] are disjoint intervals if there is no common point between these two intervals.
For example: [5,7] and [8,10] are disjoint intervals but the intervals [5,7] and [7,10] is not a disjoint interval as they have a common point, 7 in them.
The first line of input contains an integer ‘T’ denoting the number of test cases.
The next 2*T represents the ‘T’ test cases.
The first line of each test case contains an integer ‘n’ denoting the number of intervals.
The next ‘n’ lines of each test case contain two space-separated non-negative integers denoting the starting and end of an interval respectively.
Output Format :
For each test case, return the size of the maximal set of mutually disjoint sets.
Note :
You do not need to print anything. It has already been taken care of. Just implement the given function.
1 <= T <= 50
1 <= n <= 10^4
1 <= a < b <= 10^9
Where ‘T’ is the total number of test cases, ‘n’ is the number of intervals and ‘a’, ‘b’ are the starting and ending of an interval.
Time Limit: 1 sec
2
3
1 6
2 4
6 8
4
1 5
2 3
4 7
8 9
2
3
Test case 1 :
The intervals [1,6] and [2,4] overlap, in this case, we should select [2,4] because if we include [1,6], then we can not select [6,8]. So the desired intervals are [2,4] and [6,8].
Test case 2 :
The intervals [1,5] and [2,3] overlap, in this case, we should select [2,3] because if we include [1,5], then we can not select [4,7]. So the selected intervals are [2,3], [4,7] and [8,9].
2
3
1 8
2 5
7 8
2
1 5
2 6
2
1
Sort the intervals by their starting point.
O(N^2), where ‘N’ is the number of intervals in the given set.
For each interval, we have to iterate all the intervals starting before it.
O(N), where ‘N’ is the number of intervals in the sorted set.
We have to declare a dp array of size ‘N’.