LeetCode 452:用最少数量的箭引爆气球(贪心)

导读:本篇文章讲解 LeetCode 452:用最少数量的箭引爆气球(贪心),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

链接

题目
在这里插入图片描述

方法一:贪心

思路:

  1. 按照区间的end进行排序,
  2. 如果下一个区间的start > 上一个区间的x_end,则不重叠,可以放入x,count++;
  3. 所有不重叠的个数即为需要的弓箭数量;

注意

  1. 存在用例 :[[-2147483646,-2147483645],[2147483646,2147483647]]
    当compare在比较时,int会溢出!
    所以用 Integer.compare()
  2. 这里是start > x_end ,没有等号;

Java实现

class Solution {
    public int findMinArrowShots(int[][] points) {
        // 贪心 ,即求不重叠的区间个数!
        // 先排序
        Arrays.sort(points,new Comparator<int[]>(){
             @Override
             public int compare(int[] a,int[] b){
                 return Integer.compare(a[1],b[1]);
             }
        });

        // 筛选出不重叠的
        int x_end=points[0][1];
        int count=1;
        for(int i=1;i<points.length;i++){
            int start=points[i][0];
            if(start > x_end){
                count++;
                x_end=points[i][1];
            }
        }
        return count;
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/89182.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!