代码随想录——合并区间(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()][]);
    }
}
相关推荐
一个天蝎座 白勺 程序猿4 分钟前
飞算JavaAI进阶:重塑Java开发范式的AI革命
java·开发语言·人工智能
前端 贾公子7 分钟前
tailwindCSS === 使用插件自动类名排序
java·开发语言
10岁的博客8 分钟前
代码编程:一场思维与创造力的革命
开发语言·算法
没有bug.的程序员13 分钟前
JAVA面试宝典 -《Spring Boot 自动配置魔法解密》
java·spring boot·面试
IT永勇33 分钟前
数据结构-栈
c语言·数据结构·嵌入式开发
Aczone2833 分钟前
嵌入式 数据结构学习 (六) 树、哈希表与内核链表
数据结构·学习·算法
定偶35 分钟前
进制转换小题
c语言·开发语言·数据结构·算法
hnlucky43 分钟前
《Nginx + 双Tomcat实战:域名解析、静态服务与反向代理、负载均衡全指南》
java·linux·服务器·前端·nginx·tomcat·web
hnlucky44 分钟前
同时部署两个不同版本的tomcat要如何配置环境变量
java·服务器·http·tomcat·web
体系结构论文研讨会1 小时前
多项式环及Rq的含义
算法