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;
        }
    };
    
  • 相关阅读:
    递归方法:对于树形结构的表,根据当前数据获取无限极的父级名称
    P
    A
    今年暑假不AC1
    J
    今年暑假不AC
    A
    *max_element函数和*min_element函数
    1199: 房间安排
    素数
  • 原文地址:https://www.cnblogs.com/linrj/p/13884955.html
Copyright © 2011-2022 走看看