zoukankan      html  css  js  c++  java
  • LeetCode-贪心算法

    贪心算法

    保证每次操作都是局部最优的,并且最后得到的结果是全局最优的。

    455. 分发饼干

    455. 分发饼干

    题目描述:每个孩子都有一个满足度,每个饼干都有一个大小,只有饼干的大小大于等于一个孩子的满足度,该孩子才会获得满足。求解最多可以获得满足的孩子数量。

    示例

    输入: [1,2,3], [1,1]
    输出: 1
    解释: 
    你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,2,3。
    虽然你有两块小饼干,由于他们的尺寸都是1,你只能让胃口值是1的孩子满足。
    所以你应该输出1。
    
    输入: [1,2], [1,2,3]
    输出: 2
    解释: 
    你有两个孩子和三块小饼干,2个孩子的胃口值分别是1,2。
    你拥有的饼干数量和尺寸都足以让所有孩子满足。
    所以你应该输出2.
    

    解法

    贪心问题。优先满足胃口小的小朋友的需求。

    1. 对 g 和 s 升序排序

    2. 初始化两个指针分别指向 g 和 s 初始位置

    3. 对比 g[i] 和 s[j]

      g[i] <= s[j]:饼干满足胃口,孩子指针右移

      g[i] > s[j]:无法满足胃口

      无论满不满足胃口,都要右移饼干指针

    最后返回的就是小孩的指针移动的次数

    class Solution:
        def findContentChildren(self, g: List[int], s: List[int]) -> int:
            g, s = sorted(g), sorted(s)
            p1, p2 = 0, 0
            while p1 < len(g) and p2 < len(s):
                if g[p1] <= s[p2]:
                    p1 += 1
                p2 += 1
            return p1
    

    435. 无重叠区间

    435. 无重叠区间

    给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。

    示例

    输入: [ [1,2], [2,3], [3,4], [1,3] ]
    输出: 1
    解释: 移除 [1,3] 后,剩下的区间没有重叠。
    
    输入: [ [1,2], [1,2], [1,2] ]
    输出: 2
    解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。
    
    输入: [ [1,2], [2,3] ]
    输出: 0
    解释: 你不需要移除任何区间,因为它们已经是无重叠的了。
    

    解法

    按区间的结尾进行排序,每次选择结尾最小,并且和前一个区间不重叠的区间。

    class Solution:
        def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:
            if not intervals:
                return 0
            intervals = sorted(intervals,key=lambda x:x[-1])
            curr  = 0
            count = 1
            for i in range(1, len(intervals)):
                if intervals[curr][1] <= intervals[i][0]:
                    count += 1
                    curr = i
            return len(intervals)-count
    

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

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

  • 相关阅读:
    java后台读取配置文件
    冒泡排序
    均分火柴
    Dos 批处理 Shutdown
    时间复杂度分析
    Python冒泡排序
    Python装饰器
    获取状态栏高度
    利用zxing生成二维码
    Android下利用zxing类库实现扫一扫
  • 原文地址:https://www.cnblogs.com/LittlePanger/p/12626360.html
Copyright © 2011-2022 走看看