LeetCode:区间相关题目

    xiaoxiao2023-10-03  139

    class Solution { public: vector<vector<int>> merge(vector<vector<int>>& intervals) { vector<vector<int>> ret; if (intervals.empty()) return ret; sort(intervals.begin(), intervals.end(), [](vector<int>& a, vector<int>& b){return a[0] < b[0];}); int i = 0; while (i < intervals.size()) { int beg = intervals[i][0]; int end = intervals[i][1]; ++i; while (i < intervals.size() && intervals[i][0] <= end) { end = max(end, intervals[i][1]); ++i; } ret.push_back(vector<int>{beg, end}); } return ret; } };

    class Solution { public: int eraseOverlapIntervals(vector<vector<int>>& intervals) { sort(intervals.begin(), intervals.end(), comp); int ret = 0; int pre = 0; for(int i = 1; i < intervals.size(); ++i) { if (intervals[i][0] < intervals[pre][1]) { ret++; if (intervals[i][1] < intervals[pre][1]) pre = i; } else pre = i; } return ret; } private: static bool comp(vector<int>& a, vector<int>& b) { return a[0] < b[0]; } };

    class Solution { public: int findMinArrowShots(vector<vector<int>>& points) { sort(points.begin(), points.end(), comp); int ret = 0; int i = 0; while (i < points.size()) { int place = points[i][1]; ++i; while (i < points.size() && points[i][0] <= place) { place = min(place, points[i][1]); ++i; } ++ret; } return ret; } private: static bool comp(vector<int>& a, vector<int>& b) { if (a[0] != b[0]) return a[0] < b[0]; else return a[1] < b[1]; } };
    最新回复(0)