zoukankan      html  css  js  c++  java
  • LeetCode452. 用最少数量的箭引爆气球

    贪心,由于一支箭可以取到一个气球的左右端点,因此我们对于每个气球,我们只考虑一维区间的右端点,这样在能射爆当前气球的情况下,有可能能射爆
    更多后面的气球。

    class Solution {
    public:
        int findMinArrowShots(vector<vector<int>>& points) {
            if(points.size() == 0) {
                return 0;
            }
            sort(points.begin(), points.end(), [&](vector<int> a, vector<int> b) {   // 对区间的右端点进行排序
                if(a[1] != b[1]) {
                    return a[1] < b[1];
                }
                return a[0] < b[0];
            });
            int lastArrow = points[0][1];              // lastArrow表示目前最后一支箭的位置,初始为第一个气球的右端点
            int res = 1;
            for(int i = 1; i < points.size(); ++i) { 
                if(points[i][0] > lastArrow) {        // 如果当前气球左端点在lastArrow右边,那最少还要再加一支箭
                    ++res;
                    lastArrow = points[i][1];         // 更新最后一支箭的位置为当前气球的右端点
                }
            }
            return res;
        }
    };
    
  • 相关阅读:
    标准输入输出
    UNIX基础概念
    phpstrom设置php环境
    nginx+php+swoole安装记录
    MySQL索引
    生成器来解决大文件读取,大数据下载
    PHP调优
    PHP-FPM详解
    远程登录服务器配置
    HTTPS配置
  • 原文地址:https://www.cnblogs.com/linrj/p/13884955.html
Copyright © 2011-2022 走看看