博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Java]LeetCode57 Insert Interval
阅读量:6612 次
发布时间:2019-06-24

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

Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary).

You may assume that the intervals were initially sorted according to their start times.

Example 1:

Given intervals [1,3],[6,9], insert and merge [2,5] in as [1,5],[6,9].

Example 2:

Given [1,2],[3,5],[6,7],[8,10],[12,16], insert and merge [4,9] in as [1,2],[3,10],[12,16].

This is because the new interval [4,9] overlaps with [3,5],[6,7],[8,10].

题意:该题与56题非常相似,只是题意给出每一个区间的start是递增的。所以我们不须要排序。该题须要我们加入一个区间。然后进行融合。

这题在56题的基础上添加了区间推断的复杂度。

包括例如以下如所看到的的六种情况。
这里写图片描写叙述
而这六种情况又能够合并成三种解决方案。看例如以下代码:

/** * 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; } * } */public class Solution {
public List
insert(List
intervals, Interval newInterval) { // 先推断newInterval是否在intervals的范围内 if (newInterval == null) return intervals; int len = intervals.size(); if (len == 0) { intervals.add(newInterval); return intervals; } List
res=new ArrayList
(); for(Interval interval:intervals) { if(interval.end
newInterval.end)//newInterval插入最前端的情况 { res.add(newInterval); newInterval=interval;//这个地方非常重要。就是找到了待插入区间位置。指定新的newInterval,由于intervals中的区间也可能有相交的地方,须要融合。 }else if(interval.start<=newInterval.end||interval.end>=newInterval.start)//有重合部分的四种情况 { newInterval=new Interval(Math.min(interval.start,newInterval.start),Math.max(interval.end,newInterval.end)); } } res.add(newInterval); return res; }}
你可能感兴趣的文章
nginx安装与配置2(转载)
查看>>
沈阳一饭店凌晨爆燃,燃气报警器时刻预防
查看>>
【DM642】ICELL Interface—Cells as Algorithm Containers
查看>>
svs 在创建的时候 上传文件夹 bin obj 这些不要提交
查看>>
Tinkphp
查看>>
细说浏览器特性检测(1)-jQuery1.4添加部分
查看>>
Java基础-算术运算符(Arithmetic Operators)
查看>>
C#编程(四十七)----------集合接口和类型
查看>>
【转】关于大型网站技术演进的思考(十二)--网站静态化处理—缓存(4)
查看>>
积跬步,聚小流------Bootstrap学习记录(1)
查看>>
Android官方架构组件LiveData: 观察者模式领域二三事
查看>>
你必须知道的HTTP基本概念
查看>>
Android ContentProvider调用报错"Bad call:..."及相关Binder权限问题分析
查看>>
CentOS 6.5下PXE+Kickstart无人值守安装操作系统
查看>>
xtrapivotcontrol 控件用法及相关属性
查看>>
JS模拟select下拉菜单
查看>>
vmware workstation14永久激活密钥分享
查看>>
iOS 多线程 之 GCD(大中枢派发)(一)
查看>>
Myeclipse中打开接口实现类的快捷键
查看>>
使用JdbcTemplate和JdbcDaoSupport
查看>>