//先排序,将左区间小的放在前面,然后如果前一个的右区间大于下一个的左区间,则可以合并,分别用两个下标指向当前的大区间和将要考察的小区间

class Solution {
    public int[][] merge(int[][] intervals) {
        if(intervals.length<=1)
            return intervals;
        quickSort(intervals,0,intervals.length-1);
        int j=0;
        for(int i=0;i<intervals.length;i++)
        {
            if(intervals[j][1]>=intervals[i][0])
            {
                intervals[j][1]=Math.max(intervals[j][1],intervals[i][1]);
            }
            else
            {
                j++;
                intervals[j][0]=intervals[i][0];
                intervals[j][1]=intervals[i][1];
            }
        }
        int[][] res = Arrays.copyOfRange(intervals, 0, j+1);
        return res;
    }
    public void quickSort(int[][] arr,int l,int r)
    {
        if(l>=r)
            return ;
        int p=partition(arr,l,r);       //执行partition操作将数组分成两份
        quickSort(arr,l,p-1);
        quickSort(arr,p+1,r);
    }
    public int partition(int[][] arr,int l,int r)
    {
        int v=arr[l][0];
        int i=l;        //[l-i]为左半部分 初始为0,小于i的部分包括i
        for(int k=l+1;k<=r;k++)
        {
            if(arr[k][0]<v)
            {
                 swap(arr,k,i+1);
                 i++;
            }
          
        }
        swap(arr,l,i);
        return i;
    }
    public void swap(int[][] arr,int i,int j)
    {
        int temp=arr[i][0];
        arr[i][0]=arr[j][0];
        arr[j][0]=temp;
        int y=arr[i][1];
        arr[i][1]=arr[j][1];
        arr[j][1]=y;
    }
}

最新文章

  1. MVC5 网站开发之四 业务逻辑层的架构和基本功能
  2. 盘点销售一体机 打印POS一体的设备。 打印,盘点,销售PDA(手持终端)+移动销售POS软件
  3. VM虚拟主机怎么设置网络
  4. bootstraps字体图标无法显示
  5. 国内大学毕业论文 LaTeX 模板集合
  6. SQL注入技术专题—由浅入深【精华聚合贴】
  7. 1.2 中国象棋将帅问题进一步讨论与扩展:如何用1个变量实现N重循环?[chinese chess]
  8. netbios wins dns LLMNR
  9. jquery ajax发送delete(use in jquery file upload delete file)
  10. EntityFramework 使用Linq处理内连接(inner join)、外链接(left/right outer join)、多表查询
  11. Asp.Net中的session配置
  12. 数据结构与算法--Boyer-Moore和Rabin-Karp子字符串查找
  13. sql关键词的执行顺序
  14. php数组根据某一个键值,把相同键值的合并生成一个新的二维数组
  15. 使用Atlas进行元数据管理之Glossary(术语)
  16. 汇编语言 实验14 访问CMOS RAM
  17. java中的抽象类的作用
  18. C# TTS 文字和英文
  19. 自学git心得-5
  20. PowerDesigner表设计转化为excel或者markdown

热门文章

  1. Callable返回执行结果
  2. CTF-misc:老板,再来几道misc玩玩
  3. 安装 WSL2、Ubuntu 及 docker(详细步骤)
  4. 从原生web组件到框架组件源码(一)
  5. Java学习的第五十天
  6. Jetbrains全系列产品 2020最新激活方法 (即时更新)
  7. [python学习手册-笔记]001.python前言
  8. I am coming back
  9. 【java从入门到精通】day-07-逻辑运算符-位运算符-条件运算符-扩展赋值运算符
  10. SSH2中的笔记