[贪心] 常见区间问题

1. 区间合并

先将区间进行排序,排序完后那么,区间合并就为以下三种情况

[贪心] 常见区间问题_第1张图片

class Solution {
public:
    vector> merge(vector>& intervals) {
        sort(intervals.begin(),intervals.end());
        int st,ed;
        vector > result;
        for (int i=0;ied){
                result.push_back({st,ed});
                st = intervals[i][0];
                ed = intervals[i][1];
            }
        }
        result.push_back({st,ed});
        return result;
    }
};

 2. 无重叠区间

假设按照左边界进行排序,那么从第二个元素开始遍历,如果它的左边界在前一个元素的右边界之内那么就是发生了重叠,此时需要考虑是移除前一个元素还是移除当前元素,可以轻松得出谁的右边界更长那么更有可能与后面的元素发生重叠,也就需要被移除

[贪心] 常见区间问题_第2张图片

class Solution {
public:
    int eraseOverlapIntervals(vector>& intervals) {
        if (intervals.size() == 0) return 0;
        sort(intervals.begin(),intervals.end());
        for (int i=0;i

你可能感兴趣的:(算法,leetcode)