Given an array of intervals intervals where intervals[i] = [starti, endi], return the minimum number of intervals you need to remove to make the rest of the intervals non-overlapping.
Note that intervals which only touch at a point are non-overlapping. For example, [1, 2] and [2, 3] are non-overlapping.
Input: intervals = [[1,2],[2,3],[3,4],[1,3]]
Output: 1
Explanation: [1,3] can be removed and the rest of the intervals are non-overlapping.
Input: intervals = [[1,2],[1,2],[1,2]]
Output: 2
Explanation: You need to remove two [1,2] to make the rest of the intervals non-overlapping.
Input: intervals = [[1,2],[2,3]]
Output: 0Explanation: You don't need to remove any of the intervals since they're already non-overlapping.
The initial approach involves checking each pair of intervals to determine if they overlap. If an overlap is detected, remove one of the intervals and continue. This method, while straightforward, is not efficient, especially for large inputs, as it involves comparing each interval with every other interval.
An improved approach leverages a greedy algorithm. By sorting intervals by their end time and then iterating through them, we can quickly identify and count needs for removal, aiming to minimize the number of intervals removed while maximizing the number of non-overlapping intervals.