30.Insert Interval-插入区间(容易题)
来源:互联网 发布:淘宝卖家差评申诉 编辑:程序博客网 时间:2024/06/14 00:31
插入区间
1.题目
给出一个无重叠的按照区间起始端点排序的区间列表。
在列表中插入一个新的区间,你要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。
2.样例
插入区间[2, 5] 到 [[1,2], [5,9]],我们得到 [[1,9]]。
插入区间[3, 4] 到 [[1,2], [5,9]],我们得到 [[1,2], [3,4], [5,9]]。
3.题解
将一个新的区间插入到已存在的区间列表中无非有三种情况:
1.新区间位于区间列表中某个区间的前面,即newInterval.end < intervals.get(i).start。
2.新区间位于区间列表中某个区间的后面,即newInterval.start > intervals.get(i).end。
3.新区间与区间列表中某个区间或某几个连续区间相交,即将newInterval.end与相交区间的end值相比,取其大者。
/** * Definition of Interval: * public classs Interval { * int start, end; * Interval(int start, int end) { * this.start = start; * this.end = end; * } */class Solution { /** * Insert newInterval into intervals. * @param intervals: Sorted interval list. * @param newInterval: A new interval. * @return: A new sorted interval list. */ public ArrayList<Interval> insert(ArrayList<Interval> intervals, Interval newInterval) { if (intervals.size() == 0) { intervals.add(newInterval); return intervals; } for (int i=0;i<intervals.size();i++) { if (newInterval.end < intervals.get(i).start) { intervals.add(i,newInterval); break; } else if (newInterval.start > intervals.get(i).end) { if (i == intervals.size()-1) { intervals.add(newInterval); } continue; } else { intervals.get(i).start = Math.min(intervals.get(i).start,newInterval.start); intervals.get(i).end = Math.max(intervals.get(i).end,newInterval.end); while (i<intervals.size()-1) { if (intervals.get(i).end >= intervals.get(i+1).start) { intervals.get(i).end = Math.max(intervals.get(i).end,intervals.get(i+1).end); intervals.remove(i+1); } i++; } } } return intervals; }}
Last Update 2016.8.25
0 0
- 30.Insert Interval-插入区间(容易题)
- Insert Interval 插入区间
- Insert Interval(区间插入)
- Insert Interval 插入区间
- 插入区间Insert Interval
- LeetCode | Insert Interval(插入区间)
- LeetCode 57. Insert Interval(插入区间)
- Insert Interval 插入区间@LeetCode
- [LeetCode] Insert Interval 插入区间
- Insert Interval 插入区间到多个区间
- LeetCode OJ 之 Insert Interval (插入区间)
- Insert Interval:在区间数组中插入新的区间
- 【LeetCode-面试算法经典-Java实现】【057-Insert Interval(插入区间)】
- Leetcode 57 - Insert Interval(区间问题)
- leetCode 57.Insert Interval (插入区间) 解题思路和方法
- Insert Interval区间插入题型求解 C实现
- 【区间合并】Insert Interval
- 插入时间段 Insert Interval
- [hdu1272] 小希的迷宫
- 程序代码优化2
- 牛客网 | 最短子数组练习题
- freebcp (kshell 使用 freebcp 然后调用python,执行insert操作。当DB连接加密时,bcp失败)
- android导入项目出现style错误,menu错误
- 30.Insert Interval-插入区间(容易题)
- 03 代码编辑器-VsCode基础
- Android开发——如何实现RecyclerView通用适配器
- 【C#MVC】搭建.netMVC4工程(二)
- iOS在一个Label中展示不同颜色的text
- IOS与ReactNative
- Java多线程学习(吐血超详细总结)
- leetcode 29 Divide Two Integers(整数相除)
- android.database.StaleDataException: Attempted to access a cursor after it has been closed.