leetcode 57. Insert Interval

来源:互联网 发布:淘宝网秋装新款风衣 编辑:程序博客网 时间:2024/05/22 14:28

这一题似乎没有 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;    }}