• 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;
          }
      });
  • 相关阅读:
    XSS的原理分析与解剖
    js多少时间之前
    倒计时代码
    js data日期初始化的5种方法
    js日期格式化函数
    删除 Windows Azure 网站上的标准服务器头
    Windows Azure 社区新闻综述(#77 版)
    android 获取本机号码需要root吗?
    宣布正式发布 Biz Talk Services、Azure Active Directory 和 Traffic Manager, 同时发布 Azure Active Directory 高级版预览
    Android 下使用tcpdump网络抓包方法
  • 原文地址:https://www.cnblogs.com/ustctp/p/9046868.html
Copyright © 2020-2023  润新知