力扣hot100 合并区间 排序 贪心

Problem: 56. 合并区间

复杂度

时间复杂度: O ( n log ⁡ n ) O(n\log{n}) O(nlogn)

空间复杂度: O ( n ) O(n) O(n)

Code

Java 复制代码
class Solution {
	public int[][] merge(int[][] intervals)
	{
		Arrays.sort(intervals, (int[] a, int[] b) -> {
			return a[0] - b[0];
		});// 按照数组的第一个元素升序排序
		int n = intervals.length;
		int[][] res = new int[n][2];// 记录每个数组的左右边界
		int idx = -1;
		for (int[] a : intervals)
		{
//			第一个数组       或  当前数组不能融入 当前已有的数组 (左边界 > 已有数组的右边界)
			if (idx == -1 || a[0] > res[idx][1])
				res[++idx] = a;// 把当前数组 加入 结果
			else
//				可以融入的情况,右边界取较大值
				res[idx][1] = Math.max(a[1], res[idx][1]);
		}
		//res数组经过合并区间,长度 <= n
		return Arrays.copyOf(res, idx + 1);
	}
}
相关推荐
她说彩礼65万14 分钟前
C语言 动态内存管理
c语言·开发语言·算法
Irene199117 分钟前
数据排序为什么默认升序
算法·排序
.54830 分钟前
DFS + BFS(深度优先搜索 & 广度优先搜索)
算法·深度优先·宽度优先
一行代码一行诗++33 分钟前
转义字符和语句
c语言·开发语言·算法
算法鑫探34 分钟前
算法与数据结构 以及算法复杂度
c语言·数据结构·算法·新人首发
6Hzlia40 分钟前
【Hot 100 刷题计划】 LeetCode 23. 合并 K 个升序链表 | C++ 顺序合并
c++·leetcode·链表
逻辑驱动的ken41 分钟前
Java高频面试考点场景题16
java·开发语言·面试·职场和发展·求职招聘
数据牧羊人的成长笔记1 小时前
SVM与朴素贝叶斯算法+Kaggle竞赛+智能推荐系统+关联规则分析与Apriori算法+Gensim与LDA主题模型
算法·机器学习·支持向量机
拳里剑气1 小时前
C++算法:前缀和
开发语言·c++·算法·前缀和
隔壁大炮1 小时前
Day07-词嵌入层解释
人工智能·深度学习·算法·计算机视觉·cnn