Skip to content

Commit

Permalink
Merge pull request #45 from himanshusanecha/master
Browse files Browse the repository at this point in the history
Created merge-intervals.cpp file
  • Loading branch information
keshavagarwal17 authored Oct 4, 2021
2 parents e210580 + 29ed99b commit ba60ab1
Showing 1 changed file with 59 additions and 0 deletions.
59 changes: 59 additions & 0 deletions Merge-intervals.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
#include <bits/stdc++.h>

using namespace std;

vector < vector < int >> merge(vector < vector < int >> & intervals) {
vector < vector < int >> ans;
vector < pair < int, int > > s;
stack < pair < int, int >> stack;

for (int i = 0; i < intervals.size(); i++) {
s.push_back(make_pair(intervals[i][0], intervals[i][1]));
}

sort(s.begin(), s.end());
stack.push(s[0]);
for (int i = 0; i < intervals.size(); i++) {
auto it = stack.top();
if (it.second >= s[i].first) {
stack.pop();
if (it.second < s[i].second)
stack.push(make_pair(it.first, s[i].second));
else
stack.push(make_pair(it.first, it.second));
} else
stack.push(make_pair(s[i].first, s[i].second));
}
while (stack.empty() != true) {
auto it = stack.top();
ans.push_back({
it.first,
it.second
});
stack.pop();
}
return ans;
}
int main() {
vector < vector < int >> v;
v.push_back({
6,
8
});
v.push_back({
1,
9
});
v.push_back({
2,
4
});
v.push_back({
4,
7
});
v = merge(v);
for (int i = 0; i < v.size(); i++) {
cout << v[i][0] << " " << v[i][1] << endl;
}
}

0 comments on commit ba60ab1

Please sign in to comment.