代码随想录——合并区间(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()][]);
    }
}
相关推荐
啾啾Fun7 分钟前
[java基础-JVM篇]1_JVM自动内存管理
java·开发语言·jvm
KuunNNn18 分钟前
蓝桥杯试题:区间次方和(前缀和)
java·蓝桥杯
何中应29 分钟前
Spring Boot延迟执行实现
java·spring boot·后端
姚先生9739 分钟前
LeetCode 贪心算法经典题目 (C++实现)
c++·leetcode·贪心算法
CodeJourney.1 小时前
DeepSeek在MATLAB上的部署与应用
数据库·人工智能·算法·架构
苦学编程的谢1 小时前
链表(LinkedList)面试题
数据结构·链表
烟雨迷1 小时前
八大排序算法(C语言实现)
c语言·数据结构·学习·算法·排序算法
emmmmXxxy1 小时前
leetcode刷题-动态规划08
算法·leetcode·动态规划
tt5555555555551 小时前
每日一题——打家劫舍
c语言·数据结构·算法·leetcode
bing_1581 小时前
Java IO 和 NIO 的基本概念和 API
java·nio