代码随想录——合并区间(Leecode LCR74)

题目链接

贪心 + 排序

java 复制代码
class Solution {
    public int[][] merge(int[][] intervals) {
         ArrayList<int[]> res = new ArrayList<>();
         // 先将数组按照左区间排序
         Arrays.sort(intervals, new Comparator<int[]>() {
    		public int compare(int[] intervals1, int[] intervals2) {
        		long diff = (long)intervals1[0] - (long)intervals2[0];
        		if (diff == 0) return 0;
        		return diff > 0 ? 1 : -1;
    		}
		});
        for(int i = 1; i < intervals.length; i++){
        	// 如果intervals[i][0] <= intervals[i - 1][1]则存在区间重叠,修改intervals[i]的左右区间
            if(intervals[i][0] <= intervals[i - 1][1]){
                intervals[i][0] = intervals[i - 1][0];
                intervals[i][1] = Math.max(intervals[i - 1][1], intervals[i][1]);
            }else{
            	// 不存在区间重叠,则直接添加到结果中
                res.add(intervals[i - 1]);
            }
        }
        // 将最后一个区间添加到结果
        res.add(intervals[intervals.length - 1]);
        // 用于将 ArrayList<ArrayList<Integer>> 转换为 int[][]
        return res.toArray(new int[res.size()][]);
    }
}
相关推荐
小碗羊肉13 小时前
【JavaWeb | 第七篇】部门管理项目实战
java·开发语言·servlet
佳xuan13 小时前
简而言之c++
c++·算法
O&REO13 小时前
哈工大网安 / 信安 837 考研复试机试&面试重点 + 资料汇总
考研·面试·职场和发展
变量未定义~13 小时前
星际争霸、宝石塔的亮度差异、寻找食物储量
算法
YL2004042613 小时前
027合并两个有序链表
java·数据结构·算法·链表
维诺菌13 小时前
claude code安装
java·开发语言·ai编程·calude
顶点多余13 小时前
自定义协议、序列化、反序列化实现
java·linux·开发语言·c++·tcp/ip
June bug14 小时前
【雅思】口语概述和答题思路
职场和发展·学习方法
小新同学^O^14 小时前
简单学习 --> SpringAOP
java·学习·spring·aop
风味蘑菇干14 小时前
使用接口定义规范,实现类完成具体逻辑。
java·开发语言