435. Non-overlapping Intervals
来源:互联网 发布:lol淘宝代练封号 编辑:程序博客网 时间:2024/06/14 09:08
Given a collection of intervals, find the minimum number of intervals you need to remove to make the rest of the intervals non-overlapping.
Note:
- You may assume the interval’s end point is always bigger than its start point.
- Intervals like [1,2] and [2,3] have borders “touching” but they don’t overlap each other.
Example 1:
**Input:** [ [1,2], [2,3], [3,4], [1,3] ]**Output:** 1**Explanation:** [1,3] can be removed and the rest of intervals are non-overlapping.
Example 2:
**Input:** [ [1,2], [1,2], [1,2] ]**Output:** 2**Explanation:** You need to remove two [1,2] to make the rest of intervals non-overlapping.
Example 3:
**Input:** [ [1,2], [2,3] ]**Output:** 0**Explanation:** You don't need to remove any of the intervals since they're already non-overlapping.
一个典型的贪心问题,极其的类似算法导论所提到的活动选择问题:
活动选择问题的贪心策略可以是
- 优先考虑活动结束早的!!
所以这个题目的贪心策略也可以是这样:
1. 先排序,按照Intervals的end的升序进行排序
1. 贪心策略是选择end小的!
1. 可以选择是begin在上个end之后的
所以,具体代码如下:
- 排序为了方便我把end放在前面了
- k指的是上一次我所选择的Interval的序号
class Solution(object): def eraseOverlapIntervals(self, intervals): """ :type intervals: List[Interval] :rtype: int """ l = sorted((i.end,i.start) for i in intervals)#[ [1,2], [2,3], [3,4], [1,3] ] 排序后 [[2,1],[3,1],[3,2],[4,3]] n=len(l) ans=0 k=0 for i in range(1,n): if l[i][1]>=l[k][0]: k=i else: ans+=1 return ans
当然 贪心策略也可以是begin较大的。
0 0
- 435. Non-overlapping Intervals
- 435. Non-overlapping Intervals
- 435. Non-overlapping Intervals
- 435. Non-overlapping Intervals
- 435. Non-overlapping Intervals
- 435. Non-overlapping Intervals
- 435. Non-overlapping Intervals
- 435. Non-overlapping Intervals
- 435. Non-overlapping Intervals
- 435. Non-overlapping Intervals
- 435. Non-overlapping Intervals
- 435. Non-overlapping Intervals
- LeetCode 435. Non-overlapping Intervals
- leetcode 435. Non-overlapping Intervals
- [Leetcode] 435. Non-overlapping Intervals
- 【LeetCode】 435. Non-overlapping Intervals
- Leetcode 435. Non-overlapping Intervals
- LeetCode 435. Non-overlapping Intervals
- Maven详解之聚合与继承
- 今天收到了地平线机器人的实习offer
- 七遍系列:说明
- Android 自定义View (二) 进阶
- 萌新循环队列学习笔记
- 435. Non-overlapping Intervals
- 如何在eclipse jee中创建Maven project并且转换为Dynamic web project
- 思考PC的位数设计
- ROS controllers简介
- 不同平台windows、linux、mac 上换行符的问题
- jQuery-template.js 认识
- python打印堆栈信息
- socket请求接受
- jieba分词