【LeetCode-面试算法经典-Java实现】【057-Insert Interval(插入区间)】
来源:互联网 发布:拳皇2002um大半圆优化 编辑:程序博客网 时间:2024/05/29 13:57
【057-Insert Interval(插入区间)】
【LeetCode-面试算法经典-Java实现】【所有题目目录索引】
原题
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]
.
题目大意
给定一系列非覆盖的区间,插入一个新的区间,有必要的时候进行区间合并,区间开始是以起始时间进行合并的
解题思路
如果原来的区间比插入区间小就插入结果集,如果插入区间有重叠,更新插入区间,如果插入区间小于原来的区间,先插入插入区间,再添加大的区间
代码实现
算法实现类
import java.util.LinkedList;import java.util.List;public class Solution { public List<Interval> insert(List<Interval> intervals, Interval newInterval) { // 保存结果的集合 List<Interval> result = new LinkedList<>(); // 输入集非空 if (intervals != null) { // 遍历元素 for (Interval item : intervals) { // newInterval == null 表示插入的区间已经处理完了 // 将比插入区间小的区间加入结果集中 if (newInterval == null || item.end < newInterval.start) { result.add(item); } // 将比插入区间大的区间加入结果集中,同时将插入的区间加入结果集 else if (item.start > newInterval.end) { result.add(newInterval); result.add(item); newInterval = null; } // 插入区间有重叠,更新插入区间 else { newInterval.start = Math.min(newInterval.start, item.start); newInterval.end = Math.max(newInterval.end, item.end); } } } // 如果插入区间非空说明插入区间还未被处理 if (newInterval != null) { result.add(newInterval); } return result; }}
评测结果
点击图片,鼠标不释放,拖动一段位置,释放后在新的窗口中查看完整图片。
特别说明
欢迎转载,转载请注明出处【http://blog.csdn.net/derrantcm/article/details/47164431】
3 1
- 【LeetCode-面试算法经典-Java实现】【057-Insert Interval(插入区间)】
- LeetCode | Insert Interval(插入区间)
- LeetCode 57. Insert Interval(插入区间)
- Insert Interval 插入区间@LeetCode
- [LeetCode] Insert Interval 插入区间
- 【LeetCode-面试算法经典-Java实现】【035-Search Insert Position(搜索插入位置)】
- LeetCode OJ 之 Insert Interval (插入区间)
- Insert Interval 插入区间
- Insert Interval(区间插入)
- Insert Interval 插入区间
- 插入区间Insert Interval
- Leetcode 57 - Insert Interval(区间问题)
- leetCode 57.Insert Interval (插入区间) 解题思路和方法
- 【LeetCode-面试算法经典-Java实现】【056-Merge Intervals(区间合并)】
- Insert Interval区间插入题型求解 C实现
- Insert Interval 插入区间到多个区间
- 【LeetCode-面试算法经典-Java实现】【147-Insertion Sort List(链表插入排序)】
- [Leetcode] Insert Interval (Java)
- DT大数据梦工厂 温故而知新 之13讲
- Java RandomAccessFile文件操作详解
- DT大数据梦工厂 温故而知新 之14讲
- zTree初体验(三)——异步加载
- OpenVas 8 on Ubuntu Server 14.04
- 【LeetCode-面试算法经典-Java实现】【057-Insert Interval(插入区间)】
- 【LeetCode-面试算法经典-Java实现】【058-Length of Last Word (最后一个单词的长度)】
- 【LeetCode-面试算法经典-Java实现】【059-Spiral Matrix II(螺旋矩阵II)】
- 3.2 cocos2d-x渲染
- java的if语句用法总结及总结
- 老实当条听话Dog到底能不能在公司生存?——北漂18年(19)
- Mybatis 自动生成代码工具
- Objective C语言----类,对象,方法总结
- BMW 420i