当前位置: 首页 > news >正文

每日一题:leetcode 57 插入区间

给你一个 无重叠的 ,按照区间起始端点排序的区间列表。

在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。

示例 1:

输入:intervals = [[1,3],[6,9]], newInterval = [2,5]
输出:[[1,5],[6,9]]

示例 2:

输入:intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]
输出:[[1,2],[3,10],[12,16]]
解释:这是因为新的区间 [4,8][3,5],[6,7],[8,10] 重叠。

示例 3:

输入:intervals = [], newInterval = [5,7]
输出:[[5,7]]

示例 4:

输入:intervals = [[1,5]], newInterval = [2,3]
输出:[[1,5]]

示例 5:

输入:intervals = [[1,5]], newInterval = [2,7]
输出:[[1,7]]

提示:

  • 0 <= intervals.length <= 104
  • intervals[i].length == 2
  • 0 <= intervals[i][0] <= intervals[i][1] <= 105
  • intervals 根据 intervals[i][0] 按 升序 排列
  • newInterval.length == 2
  • 0 <= newInterval[0] <= newInterval[1] <= 105

思路:

跟之前的同向指针一样,只要互不重叠的情况下,就要看需要插入的区间是否在已有的区间内,判断的标准则是看插入的区间左边界是否有小于某个区间的右边界,如果有则合并。并且记录更大的右边界。

class Solution {public int[][] insert(int[][] intervals, int[] newInterval) {int left = newInterval[0];int right = newInterval[1];boolean placed = false;List<int[]> ansList = new ArrayList<int[]>();for (int[] interval : intervals) {if (interval[0] > right) {// 在插入区间的右侧且无交集if (!placed) {ansList.add(new int[]{left, right});placed = true;}ansList.add(interval);} else if (interval[1] < left) {// 在插入区间的左侧且无交集ansList.add(interval);} else {// 与插入区间有交集,计算它们的并集left = Math.min(left, interval[0]);right = Math.max(right, interval[1]);}}if (!placed) {ansList.add(new int[]{left, right});}int[][] ans = new int[ansList.size()][2];for (int i = 0; i < ansList.size(); ++i) {ans[i] = ansList.get(i);}return ans;}
}

http://www.lryc.cn/news/144166.html

相关文章:

  • 第五节:实现自己的第一个environment
  • 无套路,财务数据分析-多组织损益表分析分享
  • Java并发编程第6讲——线程池(万字详解)
  • AI + Milvus:将时尚应用搭建进行到底
  • 归并排序(Java 实例代码)
  • 【VUE】数字动态变化到目标值-vue-count-to
  • Mysql /etc/my.cnf参数详解(二)
  • AUTOSAR规范与ECU软件开发(实践篇)6.10AUTOSAR操作系统概念与配置方法介绍(下)
  • 蓝牙 - 经典蓝牙物理信道介绍
  • 性能测试中未做集群时,在登入中已经保存了登入的session,但可能会出现在不同的服务器上显示登入失败
  • Python环境下载安装使用
  • 图像扭曲之波浪扭曲
  • 《自动驾驶与机器人中的SLAM技术》之GNSS相关基础知识总结
  • 【前端|CSS系列第4篇】面试官:你了解居中布局吗?
  • 安全物理环境技术测评要求项
  • SAP MTS案例教程PP生产前台操作
  • Celery task 执行报错 TypeError: Object of type set is not JSON serializable 问题分析处理
  • 【大魔王送书第一期】《一名阿里服务端开发工程师的进阶之路》
  • [FPGA IP系列] BRAM IP参数配置与使用示例
  • react ts
  • 配置MySQL
  • GFPGAN 集成Flask 接口化改造
  • vue数字输入框
  • JavaScript—BOM
  • C# SocketException(0x2746) asp.net一个现有的连接被远程主机强行关闭
  • 博客系统后端(项目系列2)
  • 随机化快速排序(Java 实例代码)
  • JVM 垃圾收集
  • kubesphere中部署grafana实现dashboard以PDF方式导出
  • 【环境配置】Android-Studio-OpenCV-JNI以及常见错误 ( 持续更新 )