LeetCode56.結合

981 ワード

問題を解く構想.
  • 対の集合は、開始値の昇順に
  • 配列する.
  • は、2つのオブジェクトv 1(最初に並べ替えられたセットの最初の要素)を作成し、v 2(v 1の後の要素)を比較し、区間が重なることが判明した場合、v 1の末尾値を変更します.そうしないと、直接v 1を結果配列に追加し、v 2から
  • を比較します.
    public List merge(List intervals) {
            List list = new ArrayList();
            if(intervals.size() == 0)
          return list;
         //  ,   Comparator  
         Collections.sort(intervals,new Comparator() {
       @Override
       public int compare(Interval o1, Interval o2) {
        // TODO Auto-generated method stub
        return o1.start - o2.start;//       
       }
      });
            Interval v1=intervals.get(0);
            for(int i=0;i= v1.start &&v2.start <= v1.end){
           v1.end = Math.max(v1.end, v2.end);
          }else{//    ,    
           list.add(v1);
           v1 = v2;//i1  
          }
         }
        return list;
        }