目录
题目:
代码(首刷看解析 2024年2月17日):
class Solution {
private:
const static bool cmp(vector<int>& a,vector<int>& b) {
return a[0] < b[0];
}
public:
int eraseOverlapIntervals(vector<vector<int>>& intervals) {
if (intervals.size() < 2) return 0;
sort(intervals.begin(), intervals.end(), cmp);
int res = 0;
int preIndex = 0;
for (int i = 1; i < intervals.size(); ++i) {
if (intervals[i][0] >= intervals[preIndex][1]) preIndex = i;
else {
if (intervals[i][1] < intervals[preIndex][1]) preIndex = i;
res++;
}
}
return res;
}
};
代码(二刷自解 2024年6月16日 go)
func eraseOverlapIntervals(intervals [][]int) int {
sort.Slice(intervals, func (a, b int) bool {
if intervals[a][0] == intervals[b][0] {
return intervals[a][1] <= intervals[b][1]
}
return intervals[a][0] < intervals[b][0]
})
res := 0
//start := intervals[0][0]
end := intervals[0][1]
for _, value := range intervals[1:] {
if value[0] >= end {
end = value[1]
} else {
res++
end = min(end, value[1])//更新最小值
}
}
return res
}
func min(a, b int) int {
if a < b {
return a
}
return b
}