LeeCodeマージ間隔ルーラーメソッド

タイトル

ポータルのマージ間隔

解決策

間隔は左境界に従って並べ替えられ、ルーラーメソッドは間隔を継続的にマージし、間隔の右境界の最大値は各間隔に対して維持されます。

class Solution {
private:
    static bool cmp(const vector<int> &a, const vector<int> &b){
        return a[0] < b[0];
    }
public:
    vector<vector<int>> merge(vector<vector<int>>& intervals) {
        int sz = intervals.size();
        if(sz <= 1) return intervals;
        sort(intervals.begin(), intervals.end(), cmp);
        vector<vector<int>> res(sz, vector<int>(2));
        int s = 0, t = 1, sz2 = 0;
        for(;;){
            int m = intervals[s][1];
            while(t < sz && intervals[t][0] <= m){
                m = max(m, intervals[t][1]);
                ++t;
            }
            res[sz2][0] = intervals[s][0], res[sz2][1] = m;
            ++sz2;
            if(t >= sz) break;
            s = t, t = s + 1;
        }
        res.resize(sz2);
        return res;
    }
};
元の記事を110件公開 Like1 Visits 2040

おすすめ

転載: blog.csdn.net/neweryyy/article/details/105556627