代码随想录——合并区间(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()][]);
    }
}
相关推荐
程序猿乐锅2 小时前
从0-1一文详解RabbitMQ
java·分布式·后端·中间件·rabbitmq·ruby
考虑考虑5 小时前
JDK26中的List.ofLazy()
java·后端·java ee
小蒜学长5 小时前
基于SpringBoot的公寓报修管理系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·公寓报修管理系统·多角色协同
for_ever_love__5 小时前
MySQL 主从复制讲透:binlog 原理、搭建步骤与读写分离
java·数据库·mysql·binlog·读写分离·原理·主从复制
Ada's5 小时前
【计算机基础系列】003:Python数据结构
开发语言·数据结构·python
海绵宝宝转agent6 小时前
JUC高频面试八股总结个人开源
面试·职场和发展
Nil2087 小时前
leetcode 118杨辉三角
算法·leetcode·职场和发展
小π军8 小时前
操作系统面试题
java·linux·服务器
倔强的石头1068 小时前
应用账号最小权限实践:读写账号、报表账号、运维账号分层
java·运维·开发语言