0%

Leetcode435 Non-overlapping Intervals

Description

Given a collection of intervals, find the minimum number of intervals you need to remove to make the rest of the intervals non-overlapping.

Example

Example 1:

1
2
3
Input: [[1,2],[2,3],[3,4],[1,3]]
Output: 1
Explanation: [1,3] can be removed and the rest of intervals are non-overlapping.

Example 2:
1
2
3
Input: [[1,2],[1,2],[1,2]]
Output: 2
Explanation: You need to remove two [1,2] to make the rest of intervals non-overlapping.

Example 3:
1
2
3
Input: [[1,2],[2,3]]
Output: 0
Explanation: You don't need to remove any of the intervals since they're already non-overlapping.

Note:

  • You may assume the interval’s end point is always bigger than its start point.
  • Intervals like [1,2] and [2,3] have borders “touching” but they don’t overlap each other.

Solution

Minimum number of intervals you need to remove == find the maximum number of intervals that are non-overlapping

  • Time Complexity:
  • Space Complexity:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
public int eraseOverlapIntervals(int[][] intervals) {
if (intervals.length == 0) return 0;
Arrays.sort(intervals, (a, b)->a[1] - b[1]);

int end = intervals[0][1];
int max = 1;
for (int i = 1; i < intervals.length; i++){
if (intervals[i][0] >= end){
max++;
end = intervals[i][1];
}
}

return intervals.length - max;
}
}

Similiar Problem

  • 56 Merge Intervals
  • 252 Meeting Rooms
  • 253 Meeting Rooms II
  • 452 Minimum Number of Arrows to Burst Balloons