题目描述
给定多个区间,计算让这些区间互不重叠所需要移除区间的最少个数。起止相连不算重叠
输入输出样例
输入是一个数组,数组由多个长度固定为 2 的数组组成,表示区间的开始和结尾。输出一个 整数,表示需要移除的区间数量
Input: [[1,2], [2,4], [1,3]]
Output: 1
代码
func eraseOverlapIntervals(intervals [][]int) int {
if intervals == nil {
return 0
}
size := len(intervals)
sort.Slice(intervals, func(i, j int) bool {
return intervals[i][1] < intervals[j][1]
})
var total int
for i, j := 0, 1; i < size-1 && j < size;j++{
if intervals[i][1] <= intervals[j][0] {
i = j
continue
} else {
if intervals[i][1] >= intervals[j][1] {
i = j
total++
continue
} else {
total++
continue
}
}
}
return total
}
func main() {
intervals := [][]int{{1, 100}, {11, 22}, {1, 11}, {2, 12}}
total := eraseOverlapIntervals(intervals)
fmt.Println(total)
}