zoukankan      html  css  js  c++  java
  • 合并区间

    此博客链接:

    合并区间

    题目链接:https://leetcode-cn.com/problems/merge-intervals/

    题目

    以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。

    示例 1:

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

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

    提示:

    1 <= intervals.length <= 104
    intervals[i].length == 2
    0 <= starti <= endi <= 104

    题解

     取数组元素,比较前一个元素的尾元素和后一个元素的头元素,如果尾元素小于头元素,说明没有交集,否则就把这两个元素合并,合并时需要判断第一个数组的尾元素和第二个数组的尾元素那个值大,取前一个元素的头元素和两者尾元素较大的值组成新的元素。

    举例如下

    黄色两个数组是没有交集的,绿色的两个数组是有交集的,需要比较两个数组的尾元素那个大,第一个是后者的尾元素大,所以合并后是[1,5],第二个是前者的尾元素大,所以合并后是[1,4]。

     重点:可以用以上方法判断,每个数组的头元素必须是已经排好序的。

     对二维数组中的某个元素进行排序,模板如下

    Arrays.sort(intervals, new Comparator<int[]>() {
                @Override
                public int compare(int[] o1, int[] o2) {
                    return o1[0]-o2[0];
                }
    

      

    代码

    class Solution {
        public int[][] merge(int[][] intervals) {
           Arrays.sort(intervals, new Comparator<int[]>()
           {
               public int compare(int[] o1,int[] o2){
                   return o1[0]-o2[0];
               }
           });
         
    
    
           List<int[]> list=new ArrayList();
           for(int i=0;i<intervals.length;i++)
           {
               int size=list.size();
               if(size==0||list.get(size-1)[1]<intervals[i][0])
               {
                   list.add(intervals[i]);
               }
               else{
                   int temp[]=list.get(size-1);
                   temp[1]=Math.max(temp[1],intervals[i][1]);
               }
           }
           return list.toArray(new int[list.size()][]);
        }
    }

    结果

    出来混总是要还的
  • 相关阅读:
    【转】算法的时间复杂度
    FFT 物理意义(转)
    【转】FIR学习1
    【转】DFT DTFT DFS FFT的关系
    【转】TCL中的数组
    【转】setup time和hold time的周期问题(slack)
    【转】TCL语法简介
    【转】亚稳态分析
    ubuntu下Samba服务器搭建
    第一次生成uImage出现的问题解决
  • 原文地址:https://www.cnblogs.com/ping2yingshi/p/15150801.html
Copyright © 2011-2022 走看看