leetcode 452. Minimum Number of Arrows to Burst Balloons

题目452. Minimum Number of Arrows to Burst Balloons
等级: medium
标签:贪心

思路

对pair,以第一个元素为第一排序准则,第二个元素为次要准则排序。
然后从小到大扫描,寻找连续的有交叠部分的pair,然后销毁,计数加一,继续此操作至尾部,计数结果即为答案

实现

# include <iostream>
# include <Vector>
# include <algorithm>

using namespace std;

bool cmp(pair<int, int> a, pair<int, int> b) {
    return a.first < b.first || (a.first == b.first && a.second < b.second);
}

class Solution {
public:
    int findMinArrowShots(vector<pair<int, int> >& points) {
        int size = points.size();
        if(size <= 1) return size;

        sort(points.begin(), points.end(), cmp);
        int index = 0, border = 0, ret = 0;
        border = points[index].second;

        while(1) {
            ret++;
            while(index < size && points[index].first <= border) {
                if(points[index].second < border)
                    border = points[index].second;
                index++;    
            };
            if(index >= size) break;

            // update the border
            border = points[index].second;  
        }   
        return ret;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值