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

Java——无重叠区间

题目链接

leetcode在线oj题——无重叠区间

题目描述

给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。

题目示例

输入: intervals = [[1,2],[2,3],[3,4],[1,3]]
输出: 1
解释: 移除 [1,3] 后,剩下的区间没有重叠。

输入: intervals = [ [1,2], [1,2], [1,2] ]
输出: 2
解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。

输入: intervals = [ [1,2], [2,3] ]
输出: 0
解释: 你不需要移除任何区间,因为它们已经是无重叠的了。

题目提示

  • 1 <= intervals.length <= 105
  • intervals[i].length == 2
  • -5 * 104 <= starti < endi <= 5 * 104

解题思路

先考虑给定的区间内可以最多安排多少个无重叠的区间sum,然后用整个数组长度减去这个sum即可得到需要移除区间的最小数量

如果按照起始点和结束点之间的距离排序,从小到大,使用贪心算法尽可能的安排所有距离最短的区间

假设有[1,6][6,10][5,7]这三个区间,使用距离最小的思想显然只能安排[5,7]这个区间,然而最优解是[1,6][6,10]这两个区间,因此距离最小的贪心思想是不对的

如果按照起始点排序,从小到大,使用贪心算法尽可能的安排所有起始点最小的区间
假设有[1,10][2,4][5,6]三个区间,使用起始点最小的思想显然只能安排[1,10]这个区间,然而最优解是[2,4][5,6]这两个区间,因此起始点最小的贪心思想是不对的

如果按照结束点排序,从小到大,使用贪心算法尽可能的安排所有结束点最小的区间
可以发现这种思想得到的结果是正确的

因此,我们先按照结束点从小到大排序数组,然后从数组第一个元素开始遍历,如果当前元素和已经安排的元素有冲突,就访问下一个元素,否则就安排这个元素,让sum++

最后让intervals.length - sum即可得到答案

代码

class Solution {public class compare implements Comparator<int[]>{@Overridepublic int compare(int[] arr1, int[] arr2){return arr1[1] - arr2[1];}}public int eraseOverlapIntervals(int[][] intervals) {Arrays.sort(intervals, new compare());int sum = 1;int index = 0;for (int i = 1; i < intervals.length; i++) {if(intervals[i][0] >= intervals[index][1]){sum++;index = i;}}return intervals.length - sum;}
}
http://www.lryc.cn/news/15062.html

相关文章:

  • 数据库和数据表创建与管理操作
  • buu [ACTF新生赛2020]crypto-rsa3 1
  • 知识库:在医疗行业的知识管理有着怎样的意义与实际影响?
  • 带你一步步搭建Web自动化测试框架
  • Redis进阶-缓存问题
  • VS Code Spring 全新功能来了!
  • 关于大数据导入流程引擎ccflow的方案
  • AI 生成二次元女孩,免费云端部署(仅需5分钟)
  • 掌握MySQL分库分表(六)解决主键重复问题--Snowflake雪花算法
  • Melis4.0[D1s]:1.启动流程(与adc按键初始化相关部分)跟踪笔记
  • GNU make 中文手册 第三章:Makefile 总述
  • 简历的专业技能怎么写?排版需要注意的事项
  • 【Git】为什么需要版本控制?版本控制工具有那些?
  • SSH远程执行Python3 Error: UnicodeEncodeError: ‘ascii‘ codec
  • 极简TypeScript教程--面向对象
  • java TCP/UDP、Socket、URL网络编程详解
  • 【C语言】宏
  • 【测试面试】自我分析+功能+接口自动化+性能测试面试题(大全),知己知彼百战百胜......
  • ASE4N65SE-ASEMI高压MOS管ASE4N65SE
  • MyBatis概述环境搭建(一)
  • 3.8国际妇女节即将到来,跨境卖家如何做好选品和营销?
  • Glue Connector 和 Connection 的关系与区别
  • 如何使用ngxin的 upstream
  • Java数组,超详细整理,适合新手入门
  • 1.3数据传输控制方式:IO数据传输控制方式、程序控制(查询)方式、程序中断方式、DMA方式、通道方式、I/O处理机
  • Linux 设置语言
  • Python基础-数据类型之集合
  • [Css]Grid属性简单陈列(适合开发时有基础的快速过一眼)
  • 100种思维模型之启发式偏差思维模型-017
  • 微服务 feign远程调用时 显示服务不可用 timed-out and no fallback