欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > 贪心算法习题其二【力扣】【算法学习day.19】

贪心算法习题其二【力扣】【算法学习day.19】

2024/11/8 21:41:49 来源:https://blog.csdn.net/2301_79232523/article/details/143437349  浏览:    关键词:贪心算法习题其二【力扣】【算法学习day.19】

前言

###我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!


习题

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

题目链接:452. 用最少数量的箭引爆气球 - 力扣(LeetCode)

题面:

基本分析: 可以通过将右边界升序排序来解决问题

代码:

class Solution {public int findMinArrowShots(int[][] points) {int n = points.length;int sum = 0;int count = 0;int flag = 0;Arrays.sort(points, new Comparator<int[]>() {@Overridepublic int compare(int[] o1, int[] o2) {return o1[1]-o2[1];}});int l = 0;while(l<n){if(count==0){count = 1;flag = points[l][1];l++;continue;}if(points[l][0]<=flag&&points[l][1]>=flag){l++;}else{sum++;count=0;}}if(count==1)sum++;return sum;}
}

2.无重叠区间

题目链接:435. 无重叠区间 - 力扣(LeetCode)

题面:

基本分析: 将右边界升序排序,然后找不互相重叠的有多少个即可

代码:

class Solution {public int eraseOverlapIntervals(int[][] intervals) {if (intervals.length == 0) {return 0;}Arrays.sort(intervals,new Comparator<int[]>(){@Overridepublic int compare(int[] o1, int[] o2) {return o1[1]-o2[1];}});int n = intervals.length;int right=intervals[0][1];int ans=1;for (int i = 1; i < n; i++) {if(intervals[i][0]>=right){ans++;right=intervals[i][1];}}return n-ans; }
}

后言

上面是贪心算法的部分习题,下一篇会讲解贪心算法的其他相关力扣习题,希望有所帮助,一同进步,共勉!   

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com