• 合并区间


    此博客链接:

    合并区间

    题目链接: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()][]);
        }
    }

    结果

    出来混总是要还的
  • 相关阅读:
    未能写入输出文件..”“拒绝访问。”的解决办法
    SecureCRT显示中文和语法高亮
    危险无处不在 Html标签带来的安全隐患(转载)
    具有负载均衡功能的MySQL服务器集群部署及实现
    Linux以及各大发行版介绍
    yum源 redis 设置
    freebsd+apache+mysql+php+phpmyadmin+zend+discuz傻瓜式教程
    VS2005无法切换到设计视图的解决方案
    IIS不能下载EXE的解决方法
    JQuery优秀插件征集
  • 原文地址:https://www.cnblogs.com/ping2yingshi/p/15150801.html
Copyright © 2020-2023  润新知