当前位置:网站首页>[interval problem] 435 Non overlapping interval
[interval problem] 435 Non overlapping interval
2022-07-05 05:16:00 【lee2813】
One 、 subject
Given a set of intervals , Find the minimum number of intervals to remove , Keep the remaining intervals from overlapping .
Be careful :
It can be said that the end of an interval is always greater than its starting point .
Section [1,2] and [2,3] The boundaries of each other “ Contact ”, But there is no overlap .
Example 1:
Input : [ [1,2], [2,3], [3,4], [1,3] ]
Output : 1
explain : remove [1,3] after , There's no overlap in the rest .
Example 2:
Input : [ [1,2], [1,2], [1,2] ]
Output : 2
explain : You need to remove two [1,2] So that the rest of the intervals don't overlap .
Example 3:
Input : [ [1,2], [2,3] ]
Output : 0
explain : You don't need to remove any intervals , Because they are already non overlapping .
Two 、 Answer key
This problem involves removing the minimum number of intervals , Analysis leads to , To make the last number of intervals reserved more , As long as the value at the end of each interval is small enough . therefore , The greedy strategy is to preferentially keep the disjoint intervals with small endings .
- First , Sort each interval according to the element at the end of the interval ( Ascending )
- then , Compare the end element value of the interval with the start value to judge whether the interval intersects , Until the end of the comparison interval
The determination of the intersection of intervals in this question :
Start from the end of the first interval , Compare with the starting element of the next interval , If the starting element of the next interval is less than prev1, Then it means that the next interval overlaps with it , discarded . In this way, it is compared with the starting element of the lower interval in turn , Until the starting element of the next interval is greater than prev1, Description no overlap , to update prev2 Is the end element of the interval , cycle .
3、 ... and 、 Code
class Solution {
public:
int eraseOverlapIntervals(vector<vector<int>>& intervals) {
if(intervals.empty()) return 0;
int n = intervals.size();
sort(intervals.begin(),intervals.end(),[](vector<int>&a,vector<int>&b){
return a[1]<b[1];
});
int total = 0,prev = intervals[0][1];
for(int i = 1;i<n;i++){
if(intervals[i][0]<prev) total++;
else prev = intervals[i][1];
}
return total;
}
};
边栏推荐
猜你喜欢
随机推荐
2022 / 7 / 1 Résumé de l'étude
FVP和Juno平台的Memory Layout介绍
Establish cloth effect in 10 seconds
C iterator
SDEI初探-透过事务看本质
Basic knowledge points
Unity shot tracking object
National teacher qualification examination in the first half of 2022
对象的序列化
Lua determines whether the current time is the time of the day
UE4/UE5 虚幻引擎,材质篇,纹理,Compression and Memory压缩和内存
使用Room数据库报警告: Schema export directory is not provided to the annotation processor so we cannot expor
[轉]: OSGI規範 深入淺出
Applet live + e-commerce, if you want to be a new retail e-commerce, use it!
Vs2015 secret key
小程序直播+電商,想做新零售電商就用它吧!
Development error notes
How to choose a panoramic camera that suits you?
54. Spiral matrix & 59 Spiral matrix II ●●
Panel panel of UI