435. 无重叠区间

思路:

遇到二维数组的区间问题,先排序。画图,按照start递增排序,如果start相等则按照end递增。

为什么按照start递增排序?保证start有序,每个item的start不会重复。

逆向思维,删除最少数量的区间,即保留最多数量的区间。从左到右先让start从小到大排序,如果cur和下一个元素重合,则选择两个元素中end更小的那个,这样剩余区间更大,可以选择更多元素。如果cur和下一个元素不重合,则都选择。

var eraseOverlapIntervals = function(intervals) {intervals.sort((a,b) => {if(a[0]===b[0]){return a[1]-b[1]}else{return a[0]-b[0]}})console.log(intervals)const que=[intervals[0]]for(let i=1; i<intervals.length; i++){let cur=que[que.length-1]if(cur[1] > intervals[i][0]){if(cur[1]>intervals[i][1]){que.pop()que.push(intervals[i])}}else{que.push(intervals[i])}}console.log(que)return intervals.length-que.length
};

763. 划分字母区间

思路:

统计每个字符出现的start和end位置,如果x字符与y字符区间重合,则更新end位置

难点在于统计字符起止位置时有点浪费空间了,开了两个二维数组,实际上start位置不需要知道。重新扫描一遍s字符串,更新当前字符出现的最远位置即可。

var partitionLabels = function(s) {const mp=new Array(26)for(let i=0; i<mp.length; i++){mp[i]=new Array(2).fill(-1)}for(let i=0; i<s.length; i++){const n=s[i].charCodeAt()-'a'.charCodeAt()// console.log(n)if(mp[n][0]===-1){mp[n]=[i,i]}else{mp[n][1]=i}}// 按照位置sort一下mp.sort((a,b) => {return a[0]-b[0]})const memo=[]for(let x of mp){if(x[0]!==-1){memo.push(x)}}let cur=memo[0], res=[]console.log(memo)for(let i=1; i<memo.length; i++){if(memo[i][0]===-1) continue// 如果不重合 分片 更新curif(cur[1]<memo[i][0]){res.push(cur[1]-cur[0]+1)cur=memo[i]}else{// 如果重合 更新cur的终点cur[1]=Math.max(cur[1], memo[i][1])}console.log(cur)}// 到达终点 打包分片res.push(cur[1]-cur[0]+1)return res
};

56. 合并区间

var merge = function(intervals) {// 先按照start递增intervals.sort((a,b) => {if(a[0]===b[0]){return a[1]-b[1]}return a[0]-b[0]})const que=[intervals[0]]console.log(intervals)for(let i=1; i<intervals.length; i++){// 如果重合 则更新queif(que[que.length-1][1]>=intervals[i][0]){que[que.length-1][1]=Math.max(que[que.length-1][1], intervals[i][1])}else{// 如果不重合 则push进来que.push(intervals[i])}}return que
};

day36-435. 无重叠区间相关推荐

  1. 通俗易懂:贪心算法(二):区间问题 (力扣435无重叠区间)

    看完本文,可以顺便解决leetcode以下题目: 435.无重叠区间(中等) 一.通俗易懂的 贪心算法 |思想 (重复一次~~~) 贪心算法就是采用贪心的策略,保证每一次的操作都是局部最优的,从而使得 ...

  2. 435. 无重叠区间

    435. 无重叠区间 给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠. 注意: 可以认为区间的终点总是大于它的起点. 区间 [1,2] 和 [2,3] 的边界相互"接触& ...

  3. 力扣记录:贪心算法3较难(1)区间问题——55 跳跃游戏,45 跳跃游戏II,452 用最少数量的箭引爆气球,435 无重叠区间,763 划分字母区间,56 合并区间

    本次题目 55 跳跃游戏 45 跳跃游戏II 452 用最少数量的箭引爆气球 435 无重叠区间 763 划分字母区间 56 合并区间 55 跳跃游戏 局部最优:不管每次跳多少步,取最大跳跃步数,若覆 ...

  4. Leetcode 435.无重叠区间 (每日一题 20210708 同类型题)

    给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠.注意:可以认为区间的终点总是大于它的起点. 区间 [1,2] 和 [2,3] 的边界相互"接触",但没有相互重叠 ...

  5. 435. 无重叠区间(贪心算法)

    给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠. 注意: 可以认为区间的终点总是大于它的起点. 区间 [1,2] 和 [2,3] 的边界相互"接触",但没有相互 ...

  6. 435. 无重叠区间(贪心经典题+思路+详解)

    一:题目: 给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠. 注意: 可以认为区间的终点总是大于它的起点. 区间 [1,2] 和 [2,3] 的边界相互"接触" ...

  7. LeetCode 435. 无重叠区间(贪心/动态规划)

    文章目录 1. 题目 2. 解题 2.1 贪心 2.2 动态规划 1. 题目 给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠. 注意: 可以认为区间的终点总是大于它的起点. 区间 ...

  8. LeetCode 435. 无重叠区间(贪婪算法)

    题目描述 给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠. 注意: 可以认为区间的终点总是大于它的起点. 区间 [1,2] 和 [2,3] 的边界相互"接触", ...

  9. LeetCode 435. 无重叠区间 做题小结

    题目 给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠.注意:可以认为区间的终点总是大于它的起点. 区间 [1,2] 和 [2,3] 的边界相互"接触",但没有相 ...

  10. leetcode 435. 无重叠区间

    给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠. 注意: 可以认为区间的终点总是大于它的起点. 区间 [1,2] 和 [2,3] 的边界相互"接触",但没有相互 ...

最新文章

  1. 字符串中子序列出现次数
  2. github--新手使用错误分析
  3. vue 打印出git提交信息_规范git项目提交并自动生成项目commit log
  4. spring学习(5):spring简介
  5. Mac 使用常见问题汇集
  6. 自组网中继台_家庭组网无线漫游方案--Mesh 组网
  7. 如何在 Mac 上更改 Safari 背景?
  8. 阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第3节 注解_14_注解_自定义注解_格式本质...
  9. HyperLPR中文车牌识别
  10. r语言 与python r中python环境的创建
  11. iOS16.0:屏幕旋转
  12. 全球屏占比最高!华为MatePad Pro震撼发布
  13. 大厂项目实战,让你面试被问到项目时不再哑口无言!
  14. 说一下HashMap的实现原理?
  15. 三子棋超详细思路及步骤
  16. druid.io集群与tranquility对zookeeper的使用(2)
  17. php7的新特性有哪些,php7新特性有哪些?
  18. 使用exe4j打包Java桌面程序为exe
  19. iOS开发 info.plist设置app启动页面
  20. 高压共轨喷油泵、喷油枪200mpa燃油系统专用 格雷希尔快速连接器G60UHP-M12E-A601

热门文章

  1. 超级滥的片子——《见龙卸甲》
  2. 网络音乐,如何走出低俗?
  3. 艾滋传言让韦唯无缘北京亚运 20年后回首往事
  4. 剖析分割平衡字符串:一场字符串的平衡术
  5. 助力战“疫”,主“力”生产:伊利的战“疫”平衡术
  6. Halcon:通过CFileDialog选择图片
  7. 百度贴吧息县吧吧主被传审——中国首例贴吧案件
  8. Nature子刊 | 周集中团队揭示长期气候变暖导致草地土壤微生物多样性降低
  9. linux lspci信息 详解_Linux硬件管理命令--lspci命令详解
  10. Java旅游网站管理系统毕业设计、Java旅游线路和景点网站设计与实现 毕设作品参考