Método de regla de intervalos de fusión LeeCode

Titulo

Intervalos de fusión del portal

Solución

Los intervalos se ordenan de acuerdo con el límite izquierdo, y el método de regla fusiona continuamente los intervalos, y el valor máximo del límite derecho del intervalo se mantiene para cada intervalo.

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 artículos originales publicados · Me gusta1 · Visitas 2040

Supongo que te gusta

Origin blog.csdn.net/neweryyy/article/details/105556627
Recomendado
Clasificación