看完本文,可以顺便解决leetcode以下题目:

435.无重叠区间(中等)

一、通俗易懂的 贪心算法 |思想 (重复一次~~~)

贪心算法就是采用贪心的策略,保证每一次的操作都是局部最优的,从而使得结果是全局最优的。

比如,A、B、C、都很喜欢吃橘子,A可以吃5个、B可以吃3个、C可以吃1个;但是现在只有7个橘子,问最多几个人可以吃饱;

我们选用的贪心策略就是,吃的少的人先吃,尽量先使用量少的人吃饱,所以在这里,B、C肯定是可以吃饱的;

在这里,又因为全局结果是局部结果的简单求和,因此,局部最优的策略同样也是全局最优的策略。

二、区间问题

435.无重叠区间(中等)

题目描述

给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠
来源:力扣(LeetCode)

输入输出样例

输入: [ [1,2], [2,3], [3,4], [1,3] ]
输出: 1
解释: 移除 [1,3] 后,剩下的区间没有重叠。
来源:力扣(LeetCode)

题解

首先,我们能够看出来,重叠的判断条件是: 一号区间的区头 < 二号区间的区尾。;所以区尾的元素越小,可以留下来的区间数目就越多,自然移除的区间数目就更少了;

所以此题的贪心策略是:不能重叠,优先保留区尾的元素小的区间。

所以,我们第一步,应该对于当前的区间集合,做一个排序,按照各个区间区尾的值进行增序排序;然后进行判断,保留下来不重叠的区间,同时对于去除区间的操作进行计数;


class Solution {public:int eraseOverlapIntervals(vector<vector<int>>& intervals) {if (intervals.empty()) {return 0;}int n = intervals.size();// 首先是对当前的集合 做区尾增序处理sort(intervals.begin(),intervals.end(),[](vector<int>a,vector<int> b){return a[1] < b[1];});int total = 0;int prev = intervals[0][1];for (int i = 1; i < n; ++i) {if (intervals[i][0] < prev) { // 下一个区头比区尾小 说明和下一个重合了++ total;} else {prev = intervals[i][1]; // 继续下一个}}return total;}
};

通俗易懂:贪心算法(二):区间问题 (力扣435无重叠区间)相关推荐

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

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

  2. 435. 无重叠区间

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

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

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

  4. 2022-4-11 Leetcode 435.无重叠区间 —— 【贪心算法】

    第一版,我本来打算是按照会议室的方式写的.每个房间放入连续的数组下标的序号.后来发现可能会出现同一个数组能够放入多个房间里,所以需要在每一轮开始前对房间进行排序. 本来自信慢慢的觉得自己能过,但是发现 ...

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

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

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

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

  7. LeetCode 435 无重叠区间

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

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

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

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

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

最新文章

  1. VLAN是什么?VLAN交换机端口类型有哪些?—Vecloud微云
  2. Automake十分钟速成教程
  3. dealloc时取weakself引起崩溃
  4. Less Css 教程
  5. 大家都在说的分布式系统到底是什么
  6. XML——XML概述
  7. 开放、普惠、高性能-SLS时序存储助力打造企业级全方位监控方案
  8. CSS盒子的三种类型(border-box、content-box)
  9. as3数据类型检查写法(is/as/typeof/in/instanceof)用法介绍
  10. usbcan系列便携式can分析仪
  11. 创业基础-乐训课堂-李家华-答案
  12. 计算机页面尺寸,网页页面尺寸一般设置多大才合适?
  13. 新版百元纸币下月发行!这些防伪你要知道
  14. Linux教程(第5版)习题部分习题及答案
  15. golang consul 观察者watch
  16. log4j2漏洞各大厂应对措施
  17. 基于cobra的go语言命令行解析器
  18. Ubuntu安装hp打印机
  19. Facebook Surround 360 使用说明
  20. 公务员中综合管理类和行政执法类有啥区别

热门文章

  1. 6. Qt 信号与信号槽(4)-QMetaObjectPrivate
  2. 01. 对称密码——算法
  3. 操作系统课设--使用信号量解决生产者/消费者同步问题
  4. unittest单元测试框架—加载测试用例的3种方法以及测试报告存储管理
  5. [工具]-电脑磁盘爆满了,但又不知道哪些文件占用的空间,怎么办?
  6. ICS汇编学习笔记——8086的指令系统
  7. Dockerfile 部署Djano项目
  8. Windows环境下Pin(二进制动态插桩引擎)搭建
  9. 9.Windows线程切换_TSS
  10. 1.12 声明自定义异常