您的位置:首页 > 其它

leetcode 57. Insert Interval

2017-06-15 22:16 381 查看
这一题似乎没有 http://blog.csdn.net/hackerzer/article/details/73253017 leetcode 56 难,不用排序,直接list插入就可以。

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Comparator;

/**
* 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 static void main(String[] args){
Solution s = new Solution();
Interval in1 = new Interval(1,2);
Interval in2 = new Interval(3,5);
Interval in3 = new Interval(6,7);
Interval in4 = new Interval(8,10);
Interval in5 = new Interval(12,16);
Interval in6 = new Interval(4,9);
List<Interval>  ins = new ArrayList<Interval>();
ins.add(in1);
ins.add(in2);
ins.add(in3);
ins.add(in4);
ins.add(in5);
s.insert(ins, in6);
}

public List<Interval> insert(List<Interval> intervals, Interval newInterval) {
int len = intervals.size();
if(len==0){
intervals.add(newInterval);
}else{
int k=-1;
for(int i=0;i<len;i++){
if(intervals.get(i).start>newInterval.start){
k=i;
break;
}
}
if(k==-1)  k = len;
//          System.out.println(k);
intervals.add(k, newInterval);
//          System.out.println(intervals.size());
//          for(Interval inte:intervals){
//              System.out.print(inte.start+" ");
//              System.out.println(inte.end);
//          }
}
List<Interval> res = merge(intervals);
//      for(Interval inst:res){
//          System.out.println(inst.start+" "+ inst.end);
//      }
return res;
}

public List<Interval> merge(List<Interval> intervals) {
List<Interval> res = new ArrayList<Interval>();
int len = intervals.size();
if(len==0)  return res;
//       Comparator cmp = new mycmp();
//       Collections.sort(intervals,cmp);
int pre_s = intervals.get(0).start;
int pre_e = intervals.get(0).end;

for(int i=1;i<len;i++){
Interval inter = intervals.get(i);
int cur_s = inter.start;
int cur_e = inter.end;
if(cur_s<=pre_e&&cur_e>pre_e){
pre_e =  cur_e;
}else if(cur_s>pre_e){
Interval new_in = new Interval(pre_s,pre_e);
res.add(new_in);
pre_s =  cur_s;
pre_e =  cur_e;
}
}
Interval new_in = new Interval(pre_s,pre_e);
res.add(new_in);
return res;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: