Leetcode56 归并重复区间
Posted 月牙儿June
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode56 归并重复区间相关的知识,希望对你有一定的参考价值。
知识储备:
一、java list得到数组长度的方法如下:
1 java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性.
2 java中的length()方法是针对字符串String说的,如果想看这个字符串的长度则用到length()这个方法.
3.java中的size()方法是针对泛型集合说的,如果想看这个泛型有多少个元素,就调用此方法来查看
二、Collections、Comparable\\Comparator、compare\\compareTo的用法:
java中compareTo和compare方法之比较
这两个方法经常搞混淆,现对其进行总结以加深记忆。
- compareTo(Object o)方法是java.lang.Comparable<T>接口中的方法,当需要对某个类的对象进行排序时,该类需要实现Comparable<T>接口的,必须重写public int compareTo(T o)方法,比如MapReduce中Map函数和Reduce函数处理的 <key,value>,其中需要根据key对键值对进行排序,所以,key实现了WritableComparable<T>接口,实现这个接口可同时用于序列化和反序列化。WritableComparable<T>接口(用于序列化和反序列化)是Writable接口和Comparable<T>接口的组合;
- compare(Object o1,Object o2)方法是java.util.Comparator<T>接口的方法,它实际上用的是待比较对象的compareTo(Object o)方法。
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;
以上是关于Leetcode56 归并重复区间的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 56. 56. Merge Intervals 20170508
LeetCode 76. Minimum Window Substring