zoukankan      html  css  js  c++  java
  • 力扣435题(区间调度问题)

    435、无重叠区间

    基本思想:

    贪心算法

    具体实现:

    A、求出有几个区间不会重叠

         1、区间集合中选择一个区间x,x是当前所有区间结束最早的 ,end最小

          2、与x相交的区间都去掉

                 与x相交的区间的start都小于x的end

          3、重复步骤1,2,知道区间为空

    B、区间大小-上述结果

    代码:

    class Solution:
        def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:
            if not intervals:
                return 0
            
            intervals.sort(key=lambda x: x[1])
            n = len(intervals)
            end = intervals[0][1]
            ans = 1
    
            for i in range(1, n):
                if intervals[i][0] >= end:
                    ans += 1
                    end = intervals[i][1]
            
            return n - ans

    452、用最少的箭头射爆气球

    基本思想:

    同上

    具体实现:

    上一题擦边也不算重叠,这一题擦边算重叠

    [1,2][2,3]算重叠

    改一下判断条件就可以了

    代码:

    class Solution:
        def findMinArrowShots(self, points: List[List[int]]) -> int:
            if not points:
                return 0
            
            points.sort(key=lambda balloon: balloon[1])
            end = points[0][1]
            ans = 1
            for balloon in points:
                if balloon[0] > end:
                    end = balloon[1]
                    ans += 1
            
            return ans
  • 相关阅读:
    2018.11.26
    JS数组
    JS2018.12.26
    手机游戏客户端架构设计
    IAP应用内购买
    cocos2dx如何优化内存的应用
    Homebrew
    OS X 文档
    Apple推送通知服务教程
    ajax分页
  • 原文地址:https://www.cnblogs.com/zhaojiayu/p/14891243.html
Copyright © 2011-2022 走看看