1234567891011121314151617181920212223242526272829 |
- /**
- * Definition for an interval.
- * type Interval struct {
- * Start int
- * End int
- * }
- */
- func eraseOverlapIntervals(intervals []Interval) (res int) {
- sort.Sort(inters(intervals))
- fast, slow, n := 1, 0, len(intervals)
- for ; fast < n; fast++ { // Greedy
- if intervals[fast].Start < intervals[slow].End { // If overlaps,
- if intervals[fast].End < intervals[slow].End { // Choose the interval that ends earlier
- slow = fast
- }
- res++
- } else {
- slow = fast
- }
- }
- return
- }
- type inters []Interval
- func (is inters) Len() int { return len(is) }
- func (is inters) Less(i, j int) bool { return is[i].Start < is[j].Start }
- func (is inters) Swap(i, j int) { is[i], is[j] = is[j], is[i] }
|