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

题目链接

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

题目分析

这个题其实有点像区间合并的题目,先对气球按照Xstart升序进行排序,然后计算所有气球可以整合成最少的区间数,返回即可。
但是这里这个题有一个坑,就是在自定义排序的时候,不能直接简单使用a-b作为返回条件,因为在最后一个测试用例中,两个数相减会导致结果溢出整型的范围,这里我们需要一点小技巧,利用Integer.compare(a,b)作为返回值即可。

代码实现

class Solution {
    public int findMinArrowShots(int[][] points) {
        if(points.length == 0){
            return 0;
        }
        //测试用例加强了,如果直接用a - b的方法,会导致溢出的问题。
        Arrays.sort(points, (o1, o2) -> {
            return Integer.compare(o1[0], o2[0]);
        });
        int res = 0;
        int start = points[0][0];
        int end = points[0][1];
        for(int i = 1; i < points.length; i++){
            if(points[i][0] > end){
                res++;
                start = points[i][0];
                end = points[i][1];
            }else{
                end = Math.min(end, points[i][1]);
            }
        }
        return res + 1;
    }
}
posted @ 2020-11-23 09:39  ZJPang  阅读(112)  评论(0编辑  收藏  举报