Java合并区间的实现

 更新时间:2023年08月29日 09:09:19   作者:N. LAWLIET  
本文主要介绍了Java合并区间的实现,通过合理使用集合类和排序算法,可以有效地解决合并区间问题,具有一定的参考价值,感兴趣的可以了解一下

问题:

以数组 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

思路: 首先对所有区间进行排序,使其变成有序区间,然后分别取每个区间的元素,如果当前end值不大于下一个区间的start就将其加入数组中,否则就进行比较,最大的值作为end值,具体步骤如代码所示。

代码:

class Solution {
    public int[][] merge(int[][] intervals) {
        int n = intervals.length;
        //先对数组进行排序
        Arrays.sort(intervals,(a,b)->a[0] - b[0]);
        List<int[]> list = new ArrayList<>();
        int starti = -1;
        int endi = -1;
        for(int[] inertval : intervals){
            if(endi < inertval[0]){
                if(starti != -1){
                    list.add(new int[]{starti,endi});
                }
                starti = inertval[0];
                endi = inertval[1];
            } else {
                endi = Math.max(endi,inertval[1]);
            }
        }
        list.add(new int[]{starti,endi});
        int[][] ans = new int[list.size()][2];
        for(int i = 0; i < ans.length; i++){ans[i] = list.get(i);}
        return ans;
    }
}

到此这篇关于Java合并区间的实现的文章就介绍到这了,更多相关Java合并区间内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • idea新建Springboot项目,设置默认maven和jdk版本方式

    idea新建Springboot项目,设置默认maven和jdk版本方式

    这篇文章主要介绍了idea新建Springboot项目,设置默认maven和jdk版本方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Java语言简介(动力节点Java学院整理)

    Java语言简介(动力节点Java学院整理)

    Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征,下面通过本文给大家分享java语言的简介,感兴趣的朋友一起看看吧
    2017-03-03
  • MyBatis查询结果resultType返回值类型的说明

    MyBatis查询结果resultType返回值类型的说明

    这篇文章主要介绍了MyBatis查询结果resultType返回值类型的说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • MyBatis中使用分页插件PageHelper实现分页功能

    MyBatis中使用分页插件PageHelper实现分页功能

    分页是经常使用的功能,本文主要介绍了Mybatis中处理特殊SQL处理逻辑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Springboot整合WebSocket实战教程

    Springboot整合WebSocket实战教程

    WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据,这篇文章主要介绍了Springboot整合WebSocket实战教程,需要的朋友可以参考下
    2023-05-05
  • java虚拟机创建失败的原因整理

    java虚拟机创建失败的原因整理

    在本篇文章里小编给大家整理了关于创建java虚拟机失败的解决方法和知识点,需要的朋友们可以参考学习下。
    2020-02-02
  • Spring @Cacheable redis异常不影响正常业务方案

    Spring @Cacheable redis异常不影响正常业务方案

    这篇文章主要介绍了Spring @Cacheable redis异常不影响正常业务方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • SpringBoot使用@Autowired为多实现的接口注入依赖

    SpringBoot使用@Autowired为多实现的接口注入依赖

    这篇文章主要介绍了SpringBoot使用@Autowired为多实现的接口注入依赖,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • 如何使用spring-ws发布webservice服务

    如何使用spring-ws发布webservice服务

    文章介绍了如何使用Spring-WS发布Web服务,包括添加依赖、创建XSD文件、生成JAXB实体、配置Endpoint、启动服务等步骤,结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-11-11
  • JAVA中 Spring定时器的两种实现方式

    JAVA中 Spring定时器的两种实现方式

    本文向您介绍Spring定时器的两种实现方式,包括Java Timer定时和Quartz定时器,两种Spring定时器的实现方式各有优点,可结合具体项目考虑是否采用。
    2015-09-09

最新评论