• LeetCode | 区间合并


    题目

    给出一个区间的集合,请合并所有重叠的区间。

    示例 1:

    输入: [[1,3],[2,6],[8,10],[15,18]]
    输出: [[1,6],[8,10],[15,18]]
    解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
    

    示例 2:

    输入: [[1,4],[4,5]]
    输出: [[1,5]]
    解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。

    解题思路

    • 给出的区间集合不一定有序,所以需要先进行排序
    • 排序后建立新的链表,并尾插入原链表的第一个元素
    • 从原链表的第二个元素进行遍历,并与新链表的最后一个元素进行比较,如果有重合的区间,则更新新链表的最后一个元素,否则,直接插入遍历到的原链表的元素

    代码实现

    package MySolution;
    
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.LinkedList;
    import java.util.List;
    
    public class Interval {
        int start;
        int end;
        Interval() { start = 0; end = 0; }
        Interval(int s, int e) { start = s; end = e; }
    }
    
    class Solution {
        public List<Interval> merge(List<Interval> intervals) {
    // 注意此处比较器接口的写法 Collections.sort(intervals,
    new Comparator<Interval>() { @Override public int compare(Interval o1, Interval o2) { if(o1.start<o2.start) return -1; else if(o1.start<o2.start) return 1; else return 0; } }); LinkedList<Interval> mergediIntervals=new LinkedList<Interval>();
         // 对空表的处理(鲁棒性)
    if(intervals.isEmpty()) return mergediIntervals;
    mergediIntervals.add(intervals.get(
    0)); for(int i=1;i<intervals.size();i++){ if(mergediIntervals.getLast().end<intervals.get(i).start) mergediIntervals.addLast(intervals.get(i)); else mergediIntervals.getLast().end=intervals.get(i).start; } return mergediIntervals; } }

    代码注意事项

    • 先考虑对特殊情况的处理(List空)
    • 自定义排序模板:
      Collections.sort(list, new Comparator<T>() {
          @Override
          public int compare(T o1, T o2) {
              // TODO Auto-generated method stub
              return 0;
          }
      });
  • 相关阅读:
    Java设计模式(学习整理)---工厂模式
    Java Swing 使用总结(转载)
    Java-生成验证码图片(自定义内容,尺寸,路径)
    二维码(带有图片)的生成
    J2se中的声音---AudioPlayer
    文件的读取和写入(指定路径)
    ASP.NET:使用Flurl制作可复用的分页组件
    ASP.NET:Forms身份验证和基于Role的权限验证
    ASP.NET:MVC模板化机制
    ASP.NET:MVC中文件上传与地址变化处理
  • 原文地址:https://www.cnblogs.com/ustctp/p/9046868.html
Copyright © 2020-2023  润新知