代码随想录——合并区间(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()][]);
    }
}
相关推荐
洛阳泰山19 分钟前
基于 Easy Rules 的电商订单智能决策系统:构建可扩展的业务规则引擎实践
java·开发语言·规则引擎·easy rules
THXW.26 分钟前
【Java项目与数据库、Maven的关系详解】
java·数据库·maven
架构师沉默30 分钟前
外卖平台每天1000万订单查询,是如何扛住高并发的?
java·后端·架构
kushu71 小时前
Java 包
java·开发语言
bug菌1 小时前
🤔领导突然考我Spring中的注解@Bean,它是做什么用的?我...
java·后端·spring
JavaArchJourney2 小时前
ArrayList 源码分析
java
寒士obj2 小时前
熟悉并使用Spring框架 - 注解篇
java·spring
BricheersZ2 小时前
LangChain4J-(1)-Hello World
java·人工智能·langchain
回家路上绕了弯2 小时前
Spring ApplicationContext 源码深度剖析:容器的核心引擎
java·spring
心月狐的流火号2 小时前
线程池ThreadPoolExecutor源码分析(JDK 17)
java·源码阅读