知识储备:
一、java list得到数组长度的方法如下:
1 java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性.
2 java中的length()方法是针对字符串String说的,如果想看这个字符串的长度则用到length()这个方法.
3.java中的size()方法是针对泛型集合说的,如果想看这个泛型有多少个元素,就调用此方法来查看
二、Collections、Comparable\Comparator、compare\compareTo的用法:
java中compareTo和compare方法之比较
new Comparator<Interval>() {
@Override
public int compare(Interval i1, Interval i2) {
return Integer.compare(i1.start, i2.start);
}
}
三、参考代码:
/**
* 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 List<Interval> merge(List<Interval> intervals) {
//先对intervals排序,重新定义Collection.sort()方法,改成根据第一个数字排序
Collections.sort(intervals,new Comparator<Interval>(){
@Override
public int compare(Interval i,Interval j){
return Integer.compare(i.start,j.start);
}
});
List<Interval> rst=new ArrayList<>();
int rstLength=0;//rst的当前位置
if(intervals.size()==0 || intervals.size()==1) return intervals;//考虑某些特殊情况
int n=intervals.size();
Interval inter=new Interval(intervals.get(0).start,intervals.get(0).end);
rst.add(inter);
for(int i=1;i<n;i++){
if(intervals.get(i).start<=rst.get(rstLength).end){
Interval fresh=new Interval(Math.min(intervals.get(i).start,rst.get(rstLength).start),Math.max(intervals.get(i).end,rst.get(rstLength).end));
rst.set(rstLength,fresh);
}
else{
rst.add(intervals.get(i));
rstLength++;
}
}
return rst;
}
}