【leetcode刷题笔记】Merge Intervals
Given a collection of intervals, merge all overlapping intervals.
For example,
Given [1,3],[2,6],[8,10],[15,18]
,
return [1,6],[8,10],[15,18]
.
题解:首先对所有的区间按照start大小排序,然后遍历排序后的数组,用last记录前一个区间,如果遍历的当前区间可以和last合并,就把它合并到last里面;否则就把last放到answer list中,并且更新last。
代码如下:
1 /**
2 * Definition for an interval.
3 * public class Interval {
4 * int start;
5 * int end;
6 * Interval() { start = 0; end = 0; }
7 * Interval(int s, int e) { start = s; end = e; }
8 * }
9 */
10 public class Solution {
11 class IntervalComparator implements Comparator<Interval>{
12 public int compare(Interval a,Interval b){
13 return a.start - b.start;
14 }
15 }
16 public List<Interval> merge(List<Interval> intervals) {
17 if(intervals == null || intervals.size() <= 1)
18 return intervals;
19 Collections.sort(intervals,new IntervalComparator());
20
21 ArrayList<Interval> answer = new ArrayList<Interval>();
22
23 Interval last = intervals.get(0);
24 for(int i = 1;i < intervals.size();i++){
25 Interval now = intervals.get(i);
26 if(last.end >= now.start){
27 last.end = Math.max(last.end, now.end);
28 }
29 else{
30 answer.add(last);
31 last = now;
32 }
33 }
34 answer.add(last);
35 return answer;
36
37
38 }
39 }
分类:
leetcode刷题总结
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了