zoukankan      html  css  js  c++  java
  • [leetcode]Merge Intervals

    Merge Intervals

    Given a collection of intervals, merge all overlapping intervals.

    For example,
    Given [1,3],[2,6],[8,10],[15,18],
    return [1,6],[8,10],[15,18].

    算法思路:

    将intervals按照start进行排序,然后建立一个空的list,把intervals的元素逐个插入并做合并操作。

    值得注意的是:如果intervals的待插入元素能与list的元素合并,则一定是与最后一个合并。think about it

    【吐槽】:这是第一遍时候想到的算法,还是很不错的,单次遍历,只不过当时不会用Collections.sort()自己手动的排序了。o(╯□╰)o

     1 /**
     2  * Definition for an interval.
     3  * public class Interval {
     4  *     int start;
     5  *     int end;
     6  *     Interval() { start = 0; end = 0; }
     7  *     Interval(int s, int e) { start = s; end = e; }
     8  * }
     9  */
    10 public class Solution {
    11     List<Interval> res = new ArrayList<Interval>();
    12     public List<Interval> merge(List<Interval> intervals) {
    13         if(intervals == null || intervals.size() == 0) return res;
    14         Collections.sort(intervals, new Comparator<Interval>(){
    15             public int compare(Interval a,Interval b){
    16                 return a.start - b.start;
    17             }
    18         });
    19         List<Interval> list = new ArrayList<Interval>();
    20         list.add(intervals.get(0));
    21         for(int i = 1; i < intervals.size(); i++){
    22             Interval last = list.get(list.size() - 1);
    23             Interval thus = intervals.get(i);
    24             if(thus.start <= last.end){
    25                 last.end = thus.end > last.end ? thus.end : last.end;
    26             }else{
    27                 list.add(thus);
    28             }
    29         }
    30         return list;
    31     }
    32 }
  • 相关阅读:
    oracle数据字典(笔记)
    oracle管理表空间和数据文件(笔记)
    oracle权限管理(笔记)
    hibernate获取session的两个方法(笔记)
    hibernate一级缓存(笔记)
    hibernate主要接口和类(笔记)
    hibernate本地事务、全局事务
    hibernate:get和load方法的区别
    位权
    学习使用CGI和HTML
  • 原文地址:https://www.cnblogs.com/huntfor/p/3868954.html
Copyright © 2011-2022 走看看