Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Program to find minimum number of intervals to be removed to remove overlaps in C++
Suppose we have a set of intervals; we have to find the minimum number of intervals that should be removed to make the rest of the intervals non-overlapping. So if the intervals are [[8,10],[3,5],[6,9]], then the output will be 1, as we have to remove [6,9] to make all others are non-overlapping.
To solve this, we will follow these steps −
- n := size of array
- if n is 0, then return 0
- count := 1
- sort the array based on the end time of the intervals
- end := end date of the first interval
- for i in range 1 to n – 1
- if start time of arr[i] >= end, then
- end := end time of arr[i]
- increase count by 1
- if start time of arr[i] >= end, then
- return n – count
Let us see the following implementation to get better understanding −
Example
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
static bool cmp(vector <int>& a, vector <int>& b){
return a[1] < b[1];
}
int eraseOverlapIntervals(vector<vector<int>>& arr) {
int n = arr.size();
if(!n)return 0;
int cnt = 1;
sort(arr.begin(), arr.end(), cmp);
int end = arr[0][1];
for(int i = 1; i < n; i++){
if(arr[i][0] >= end){
end = arr[i][1];
cnt++;
}
}
return n - cnt;
}
};
main(){
vector<vector<int>>
v = {{8,10},{3,5},{6,9}};
Solution ob;
cout << (ob.eraseOverlapIntervals(v));
}
Input
{{8,10},{3,5},{6,9}}
Output
1
Advertisements