博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
力扣(LeetCode)56
阅读量:6861 次
发布时间:2019-06-26

本文共 1283 字,大约阅读时间需要 4 分钟。

题目地址:

题目描述:
给出一个区间的集合,请合并所有重叠的区间。

示例 1:

输入: [[1,3],[2,6],[8,10],[15,18]]

输出: [[1,6],[8,10],[15,18]]
解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
示例 2:

输入: [[1,4],[4,5]]

输出: [[1,5]]
解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。

解答:

按照区间起始节点排序。
然后合并即可,这题难的是怎么写出完美的合并代码。
判断逻辑是如果ans列表为空或者ans列表最后一个区间和当前区间不相交就加入当前区间。
否则把ans列表最后一个区间和当前区间合并。

java ac代码:

/** * Definition for an interval. * public class Interval { *     int start; *     int end; *     Interval() { start = 0; end = 0; } *     Interval(int s, int e) { start = s; end = e; } * } */class Solution {    public List
merge(List
intervals) { Collections.sort(intervals, new Comparator
() { @Override public int compare(Interval o1, Interval o2) { if(o1.start != o2.start) return o1.start-o2.start; return o1.end-o2.end; } }); List
ans = new ArrayList(intervals.size()); for(int i = 0;i < intervals.size();i++) if(ans.size() == 0||ans.get(ans.size()-1).end < intervals.get(i).start) ans.add(intervals.get(i)); else ans.get(ans.size()-1).end =Math.max(intervals.get(i).end,ans.get(ans.size()-1).end ); return ans; }}

转载地址:http://pchyl.baihongyu.com/

你可能感兴趣的文章
Jmeter 接口测试 响应结果中文是Unicode转为中文
查看>>
根据 plist 还原 图片
查看>>
IE8兼容问题
查看>>
03 特殊字符
查看>>
课后练习----实现窗口的切换
查看>>
this 作用域
查看>>
Python3基础03_数据类型
查看>>
JS控制文本框输入的内容
查看>>
Tomcat7后台通过get接收数据处理乱码
查看>>
CI路径中如何去掉index.php
查看>>
精简ICO图标可减小EXE程序文件大小
查看>>
lstm caffe几个变量的含义
查看>>
博客园是不是应该取消反对按钮或者改进反对按钮
查看>>
重写equals()方法时,需要同时重写hashCode()方法
查看>>
Excel打印质量引起的异常及解决方案
查看>>
2.GET与POST的区别
查看>>
tyvj1172自然数拆分
查看>>
Makefile <网络转载>
查看>>
IO流的应用————小型资源管理器
查看>>
C++输入输出流格式控制(转)
查看>>