LeetCode_Python_贪心系列一_区间_中等

56. 合并区间

数组 intervals 表示若干个区间的集合,其中 intervals[i] = [starti, endi] 。
请合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。

class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        intervals.sort(key=lambda x: x[0])  #按区间起点排序
        n=len(intervals)
        ans=[intervals[0]]
        for i in range(1,n):
            if intervals[i][0]<=ans[-1][1]:   #当前区间起点位于上一个区间终点左边,则更新上一个区间终点为更大右端点
                ans[-1][1]=max(ans[-1][1], intervals[i][1])  
            else:
                ans.append(intervals[i])   #当前区间位于上一个区间终点右边,则添加
        return ans

452. 用最少数量的箭引爆气球

有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points ,其中points[i] = [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。

一支弓箭可以沿着 x 轴从不同点 完全垂直 地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被 引爆 。可以射出的弓箭的数量 没有限制 。 弓箭一旦被射出之后,可以无限地前进。

给你一个数组 points ,返回引爆所有气球所必须射出的 最小 弓箭数 。

class Solution:
    def findMinArrowShots(self, points: List[List[int]]) -> int:
        points.sort(key=lambda x:x[0])  #按区间起点升序排列
        n=len(points)
        ans=1  #记录使用箭的数量
        for i in range(1,n):
            if points[i][0]>points[i-1][1]:  #若当前区间起点在上一个区间终点右边,则箭数量+1
                ans+=1
            else:      #若当前区间起点在上一个区间终点左边,则当前区间右端点更新为更小的右边界
                points[i][1]=min(points[i-1][1], points[i][1])
        return ans

435. 无重叠区间

给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi] 。

返回 需要移除区间的最小数量,使剩余区间互不重叠 。

class Solution:
    def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:
        intervals.sort(key=lambda x:x[1])  #按区间终点升序排列
        ans=1  #记录重叠区间
        n=len(intervals)
        end=intervals[0][1]   #记录是否重叠的右端点
        for i in range(1,n):
            if intervals[i][0]>=end:
                end=intervals[i][1]
                ans+=1
        return n-ans
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值