首页 > 其他分享 >合并区间,对象比较大小,int compare(T a, T b)返回值位负数,则认为a小,否则a大

合并区间,对象比较大小,int compare(T a, T b)返回值位负数,则认为a小,否则a大

时间:2022-11-12 21:11:41浏览次数:38  
标签:compare end re int Interval list start 返回值

 

import java.util.*; /**  * 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; }  * }  */ public class Solution {     public ArrayList<Interval> merge(ArrayList<Interval> intervals) {         //区间按照起点升序排序         //取出A中第一个区间存入B         //取出B的最后一个区间和A的二个区间比较,局部最优解存入B         //取出B的最后一个区间和A的三个区间比较,局部最优解存入B         //取出B的最后一个和A的第四个比较,局部最优解存入B         //取出B的最后一个区间和A的第五个比较,局部最优解存入B                  Collections.sort(intervals, new Comparator<Interval>(){             public int compare(Interval o1, Interval o2){                 if(o1.start != o2.start)                     return o1.start - o2.start;                 else                     return o1.end - o2.end;             }         });
        ArrayList<Interval> re_list = new ArrayList<Interval>();         if(intervals.size()==0){             return re_list;         }         re_list.add(intervals.get(0));         for(int i=1; i<intervals.size(); i++){             //临时A,可能有问题             Interval A = re_list.get(re_list.size()-1);             re_list.remove(re_list.size()-1);             //临时B,可能有问题             Interval B = intervals.get(i);             if(A.end<B.start){                 re_list.add(A);                 re_list.add(B);
            }else if(A.end>=B.start){                 if(A.end>B.end){                     A.end = A.end;                 }else{                     A.end = B.end;                 }                 re_list.add(A);             }         }             return re_list;                          } }

标签:compare,end,re,int,Interval,list,start,返回值
From: https://www.cnblogs.com/northli/p/16884673.html

相关文章