代码随想录算法训练营第三十六天|435. 无重叠区间、763.划分字母区间、56. 合并区间
温馨提示:这篇文章已超过385天没有更新,请注意相关的内容是否还可用!
435. 无重叠区间
- 刷题
https://leetcode.cn/problems/non-overlapping-intervals/description/ - 文章讲解
https://programmercarl.com/0435.%E6%97%A0%E9%87%8D%E5%8F%A0%E5%8C%BA%E9%97%B4.html - 视频讲解
https://www.bilibili.com/video/BV1A14y1c7E1/?vd_source=af4853e80f89e28094a5fe1e220d9062 -
题解:
class Solution { public int eraseOverlapIntervals(int[][] intervals) { //这行代码是对一个二维数组intervals进行排序, //根据每个子数组的第一个元素进行升序排序。 //Lambda表达式(a,b)-> { return Integer.compare(a[0],b[0]);} //是用来定义比较规则的,比较的是每个子数组的第一个元素。 //Arrays.sort方法会根据这个比较规则对intervals进行排序。 Arrays.sort(intervals, (a, b) -> { return Integer.compare(a[0], b[0]); }); int result = 1; for(int i = 1; i763.划分字母区间
- 刷题
https://leetcode.cn/problems/partition-labels/description/ - 文章讲解
https://programmercarl.com/0763.%E5%88%92%E5%88%86%E5%AD%97%E6%AF%8D%E5%8C%BA%E9%97%B4.html - 视频讲解
https://www.bilibili.com/video/BV18G4y1K7d5/?vd_source=af4853e80f89e28094a5fe1e220d9062 -
题解:
class Solution { public List partitionLabels(String s) { List result = new LinkedList(); //使用类似桶排序的方式,一共有26个英文字母 int[] edge = new int[26]; //转化为字符数组 char[] chars = s.toCharArray(); //类似桶排序方式,记录当前字母离数组开头的最远的元素的距离 for(int i = 0; i56. 合并区间
- 刷题
https://leetcode.cn/problems/merge-intervals/description/ - 文章讲解
https://programmercarl.com/0056.%E5%90%88%E5%B9%B6%E5%8C%BA%E9%97%B4.html - 视频讲解
https://www.bilibili.com/video/BV1wx4y157nD/?vd_source=af4853e80f89e28094a5fe1e220d9062 -
题解:
class Solution { public int[][] merge(int[][] intervals) { //定义二维数组做结果存储 List result = new LinkedList(); //lambda表达式中的比较函数会根据每个区间的第一个元素进行比较 //从而实现对区间数组的按照第一个元素升序排序。 Arrays.sort(intervals, (x, y) -> Integer.compare(x[0], y[0])); //初始化最小左边界为start int start = intervals[0][0]; int mostRightBound = intervals[0][1]; for(int i = 1; i mostRightBound){ //加入结果区间并更新start //将一个新的整数数组[start, rightmostRightBound]添加到res中。 result.add(new int[]{start, mostRightBound}); //并重新更新start,mostRightBound start = intervals[i][0]; mostRightBound = intervals[i][1]; }else{ //当前左边界小于等于最大右边界,则直接在结果集中更新最大右边界 mostRightBound = Math.max(mostRightBound, intervals[i][1]); } } result.add(new int[]{start, mostRightBound}); return result.toArray(new int[result.size()][]); } }
- 刷题
- 刷题
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!
