Leecode56 intervalos de fusión

Descripción del título

Dado un conjunto de intervalos, combine todos los intervalos superpuestos.
Por ejemplo,
dado [1,3], [2,6], [8,10], [15,18],
devuelve [1,6], [8,10], [15,18].

código java

/**
 * Definition for an interval.
 * public class Interval {
 *     int start;
 *     int end;
 *     Interval() { start = 0; end = 0; }
 *     Interval(int s, int e) { start = s; end = e; }
 * }
 */
import java.util.ArrayList;
import java.util.Arrays;
public class Solution {
    public ArrayList<Interval> merge(ArrayList<Interval> intervals) {
        ArrayList<Interval> res = new ArrayList<>();
        if(intervals == null){
            return res;
        }
        int start [] = new int[intervals.size()];
        int end [] = new int[intervals.size()];        
        for(int i = 0; i < intervals.size(); i++){
            //将所有的线段起点终点保存
            start[i] = intervals.get(i).start;
            end[i] = intervals.get(i).end;
        }  
        //将所有起点终点排序,等价新的线段组合
        Arrays.sort(start);
        Arrays.sort(end);
        int i = 0;
        while(i < start.length){
            //记录起点
            int s = start[i];
            //当前线段的末尾 如果能包含下一个线段 一直移动i
            while(i < start.length-1&& end[i] >= start[i+1]){
                i++;
            }
            int e = end[i];
            res.add(new Interval(s,e));
            i++;
        }
        return res;
    }
}
Publicado 72 artículos originales · elogiado 0 · visitas 727

Supongo que te gusta

Origin blog.csdn.net/weixin_40300702/article/details/105428773
Recomendado
Clasificación