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合并区间内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java+selenium实现自动化打开页面的方法

    java+selenium实现自动化打开页面的方法

    今天小编就为大家分享一篇java+selenium实现自动化打开页面的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Java实现HTTPS连接的示例代码

    Java实现HTTPS连接的示例代码

    现在的网络世界,安全性是大家都非常关注的问题,特别是对于咱们这些程序员来说,所以,理解并实现HTTPS连接,对于保护咱们的数据安全是极其重要的,下面我们就来学习一下在Java中如何实现HTTPS连接吧
    2023-12-12
  • 推荐几本学习java的书籍

    推荐几本学习java的书籍

    本文给大家推荐了几本学习Java的书籍,非常适合Java的初学者,有需要的朋友可以看看
    2014-10-10
  • mybatis注解之@Mapper和@MapperScan的使用

    mybatis注解之@Mapper和@MapperScan的使用

    这篇文章主要介绍了mybatis注解之@Mapper和@MapperScan的使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • JAVA Iterator 转成 List 的操作

    JAVA Iterator 转成 List 的操作

    这篇文章主要介绍了JAVA Iterator 转成 List 的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • SpringCloud实现全链路灰度发布的示例详解

    SpringCloud实现全链路灰度发布的示例详解

    灰度发布是指在软件或服务发布过程中,将新版本的功能或服务以较小的比例引入到生产环境中,仅向部分用户或节点提供新功能的一种发布策略,下面我们就来学习一下SpringCloud如何实现全链路灰度发布
    2023-11-11
  • Java传入用户名和密码并自动提交表单实现登录到其他系统的实例代码

    Java传入用户名和密码并自动提交表单实现登录到其他系统的实例代码

    这篇文章主要介绍了Java传入用户名和密码并自动提交表单实现登录到其他系统,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-01-01
  • Java远程debug调试的操作步骤

    Java远程debug调试的操作步骤

    日常项目中,通常我们的代码都是部署到远程的服务器,有时线上出现了问题,经常需要我们增加一些日志来排查问题,但是如果是测试环境的场景下或者我们能进行远程调试的话,我们就可以使用远程的Debug方式进行远程调试,下面给大家介绍一下Java远程debug调试的操作步骤
    2025-04-04
  • SpringBoot的跨域注解@CrossOrigin解析

    SpringBoot的跨域注解@CrossOrigin解析

    这篇文章主要介绍了SpringBoot的跨域注解@CrossOrigin解析,Spring Framework 4.2 GA为CORS提供了第一类支持,使您比通常的基于过滤器的解决方案更容易和更强大地配置它,所以springMVC的版本要在4.2或以上版本才支持@CrossOrigin,需要的朋友可以参考下
    2023-12-12
  • 详解Spring Boot整合Mybatis实现 Druid多数据源配置

    详解Spring Boot整合Mybatis实现 Druid多数据源配置

    本篇文章主要介绍了详解Spring Boot整合Mybatis实现 Druid多数据源配置,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-03-03

最新评论