LeetCode刷题---用最少数量的箭引爆气球

LeetCode刷题---用最少数量的箭引爆气球_第1张图片
LeetCode刷题---用最少数量的箭引爆气球_第2张图片
解题思路:

该题使用贪心的思想来获取局部最优解
首先对原始区间数组按照每个区间的第一个元素(start)来进行排序。
创建一个List用于存储遍历后的区间,先将排序后的数组的第一个元素加入到List中,之后开始遍历数组。如果第二个区间的start大于第一个区间的end,则证明两个区间不重叠,直接将当前区间加入到List中,如果第二个区间的start小于或等于第一个区间的end,那么两个区间重叠,此时将两个区间合并,合并后的区间的start为第一个区间的start,end为两个区间的最小end,再将合并后的区间加入到List中。
最终遍历结束后,List的size即为所需要的最小弓箭数量。

代码实现:

public int findMinArrowShots(int[][] points) {
        
        List pointsList=new ArrayList<>();

        //先对原始数组按照第一个元素进行排序
        Arrays.sort(points, Comparator.comparingInt(p -> p[0]));
        pointsList.add(points[0]);
        for(int i=1;i

你可能感兴趣的:(LeetCode刷题,leetcode,算法,职场和发展)