文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C语言题解Leetcode56合并区间实例

2023-01-05 12:01

关注

解题思路

题目链接 56. 合并区间

本质在于两两做对比,如果两个区间,可以合并,则为结果二维数组中的一员,如果不可合并,则放入结果二维数组,所以根本在于,如何判断两个区间,是可合并,还是不可合并

1.首先将二维数组,按照左端元素进行排序

2.将第一个元素放入结果区间列表

3.如果当前区间的左端元素比结果区间列表最后一个区间右端元素小,则存在包含关系,此时只需更新右端元素即可 (更新为当前区间的右端元素与结果区间的右端元素的最大值)

4.如果不包含,则将当前区间加入结果区间列表,作为最后一个区间 5.输出结果区间列表

解题遇到的问题

1.二维数组排序

2.二维数组在不知道大小时,如何初始化?

后续需要总结学习的知识点

## 解法1
class Solution {
	public int[][] merge(int[][] intervals) {
		Arrays.sort(intervals, new Comparator<int[]>() {
			@Override
			public int compare(int[] o1, int[] o2) {
				return o1[0] - o2[0];
			}
		});

		int index = 0;
		for (int i = 1; i < intervals.length; i++) {
			if (intervals[index][1] < intervals[i][0]) {
				index++;
				intervals[index][0] = intervals[i][0];
				intervals[index][1] = intervals[i][1];
			} else {
				intervals[index][1] = Math.max(intervals[i][1],
						intervals[index][1]);
			}
		}
		return Arrays.copyOf(intervals, index + 1);
	}
}

以上就是C语言题解Leetcode56合并区间实例的详细内容,更多关于C语言 Leetcode合并区间的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯