博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java for LeetCode 056 Merge Intervals
阅读量:5143 次
发布时间:2019-06-13

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

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].

解题思路一:

用两个指针startIndex和endIndex来维护每次添加intervals的start和end的位置,然后分类讨论即可,JAVA实现如下:

public List
merge(List
intervals) { List
list = new ArrayList
(); if (intervals.size() == 0) return list; list.add(intervals.get(0)); for (int i = 1; i < intervals.size(); i++) { Interval temp = intervals.get(i); int startIndex = 0, endIndex = 0; for (int j = 0; j < list.size(); j++) { if (temp.start > list.get(j).end) { startIndex += 2; endIndex += 2; continue; } if (temp.end < list.get(j).start) break; if (temp.start >= list.get(j).start) startIndex++; if (temp.end > list.get(j).end) { endIndex += 2; continue; } if (temp.end >= list.get(j).start) endIndex++; break; } if(startIndex==endIndex&&startIndex%2==0) list.add(startIndex/2,new Interval(temp.start,temp.end)); else if(startIndex%2==0&&endIndex%2==0){ list.get(startIndex/2).start=temp.start; list.get(startIndex/2).end=temp.end; for(int k=1;k

 解题思路二:

首先构造一个比较器,对interval按照start进行排序,然后进行遍历,在遍历过程中,如果结果集合为空或者当前interval与结果集合中的最后一个interval不重叠,那么就直接将当前interval直接加入到结果集合中;如果发生了重叠,那么将结果集合的最后一个interval的右端点改为当前interval的右端点,JAVA实现如下:

public List
merge(List
intervals) { List
list = new ArrayList
(); Comparator
comparator = new Comparator
() { @Override public int compare(Interval o1, Interval o2) { if (o1.start == o2.start) return o1.end - o2.end; return o1.start - o2.start; } }; Collections.sort(intervals, comparator); for (Interval interval : intervals) if (list.size() == 0 || list.get(list.size() - 1).end < interval.start) list.add(new Interval(interval.start, interval.end)); else list.get(list.size() - 1).end = Math.max(interval.end, list.get(list.size() - 1).end); return list; }

 

转载于:https://www.cnblogs.com/tonyluis/p/4506572.html

你可能感兴趣的文章
使用PHP拆分中文字符串的方法(收藏) 小节
查看>>
android系统权限的管理
查看>>
win10每次开机都显示“你的硬件设置已更改,请重启电脑……”的解决办法
查看>>
因Window服务器自动更新并重启导致WebSphere服务停止服务故障一例
查看>>
如何开启safari的调试
查看>>
js深拷贝和浅拷贝
查看>>
node.js 基础学习笔记1
查看>>
如何在linux系统中设置静态ip地址
查看>>
二分查找法,折半查找原理
查看>>
DP简单问题联系--最长递增子序列+最长公共子序列等
查看>>
2017-4-18 Zabbix server的安装以及ansible批量部署zabbix agent的工作笔记
查看>>
GridView 动态列上方添加相应的Combox等控件
查看>>
申请开发者账号
查看>>
oracle启动
查看>>
c++模板学习
查看>>
【转】MySQL Event
查看>>
[转]html5监听任何App自带返回键javascript事件
查看>>
通俗理解LDA主题模型
查看>>
jzoj5813
查看>>
HttpServletRequest 获取URL的方法及区别
查看>>