Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2017
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.08 KB | None | 0 0
  1. /**
  2. * Definition for an interval.
  3. * struct Interval {
  4. * int start;
  5. * int end;
  6. * Interval() : start(0), end(0) {}
  7. * Interval(int s, int e) : start(s), end(e) {}
  8. * };
  9. */
  10. class Solution {
  11. public:
  12. vector<Interval> merge(vector<Interval>& intervals) {
  13. vector<Interval> results;
  14. if (intervals.size() == 0) {
  15. return intervals;
  16. }
  17.  
  18. sort(intervals.begin(), intervals.end(), [](Interval& a, Interval& b) {
  19. return tie(a.start, a.end) <= tie(b.start, b.end);
  20. });
  21.  
  22. results.push_back(intervals[0]);
  23. auto prev = results[0];
  24. for(int i = 1; i< intervals.size(); ++i) {
  25. auto current = intervals[i];
  26. if (current.start <= prev.end) {
  27. results.pop_back();
  28. results.push_back(Interval(prev.start, max(prev.end, current.end)));
  29. }
  30. else {
  31. results.push_back(current);
  32. }
  33. prev = results[results.size() -1];
  34. }
  35. return results;
  36. }
  37. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement