`

Insert Interval

阅读更多
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].

题目中给定了一个排好序的interval数组,interval之间没有覆盖,然后插入一个新的interval,merge之后返回,从第一个元素开始,如果有冲突更新newInterval的start,将它加入结果集中,然后判断newInterval的end属性。遍历一遍数组,时间复杂度为O(n)。代码如下:
/**
 * 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<Interval> insert(List<Interval> intervals, Interval newInterval) {
        List<Interval> list = new ArrayList<Interval>();
        if(intervals == null || intervals.size() == 0) {
            list.add(newInterval);
            return list;
        }
        int i = 0;
        while(i < intervals.size() && intervals.get(i).end < newInterval.start) {
            list.add(intervals.get(i));
            i ++;
        }
        if(i < intervals.size()) 
            newInterval.start = Math.min(newInterval.start, intervals.get(i).start);
        list.add(newInterval);
        while(i < intervals.size() && newInterval.end >= intervals.get(i).start) {
            newInterval.end = Math.max(newInterval.end, intervals.get(i).end);
            i ++;
        }
        while (i < intervals.size()) {
            list.add(intervals.get(i));
            i ++;
        }
        return list;
    }
}
分享到:
评论

相关推荐

    java-leetcode题解之Insert Interval.java

    java java_leetcode题解之Insert Interval.java

    Coding Interview In Java

    12 Insert Interval 45 13 Two Sum 47 14 Two Sum II Input array is sorted 49 15 Two Sum III Data structure design 51 16 3Sum 53 17 4Sum 55 18 3Sum Closest 57 19 String to Integer (atoi) 59 20 Merge ...

    js-leetcode题解之57-insert-interval.js

    js js_leetcode题解之57-insert-interval.js

    C语言入门-leetcode练习之第57题插入区间.zip

    在本资源包中,我们关注的是C语言的学习以及如何通过LeetCode平台进行编程练习,特别是针对第57题“插入区间”(Insert Interval)的解题方法。LeetCode是一个在线平台,提供了各种算法题目,旨在帮助程序员提升技能...

    创建和使用SAP的号码范围对象

    接着,点击“Number Ranges”,然后点击“Change Intervals”,最后点击“Insert Interval”。 二、测试号码范围对象 可以使用函数模块 NUMBER_GET_NEXT 来获取号码范围对象的下一个可用号码。下面是一个测试程序...

    c++-c++编程基础之leetcode题解第57题插入区间.zip

    第57题,"插入区间"(Insert Interval),是其中一道挑战性较高的问题,旨在检验开发者对区间操作、数据结构以及排序算法的理解。下面将详细探讨这个问题的背景、解题策略以及相关的C++编程知识点。 问题描述: ...

    LeetCode题解(java语言实现).pdf

    * Insert Interval:该题目要求将一个区间插入到另一个区间中,实现方法使用了排序和迭代算法。 三、字符串和动态规划 * String to Integer (atoi):该题目要求将字符串转换成整数,实现方法使用了状态机算法。 * ...

    LeetCode题解 - Java语言实现-181页.pdf

    10. Insert Interval 区间插入是一个数组问题,要求将一个区间插入到已经排序的区间数组中。可以使用二分搜索来解决该问题。 11. Two Sum 两数之和是一个经典的数组问题,要求找到数组中两个元素之和等于目标值的...

    Leetcode部分解答(126题)

    5. **Merge Intervals(using (Insert Interval) ).cpp** - 这是第56题“合并区间”的解冑,涉及到区间操作,尤其是如何有效地插入新区间并合并重叠区间。 6. **Integer to Roman.cpp** - 第40题,与“Roman to ...

    coding-interview-in-java.pdf

    5. InsertInterval - 在一组区间中插入一个新的区间,并确保结果区间仍然是排序和无重叠的。这需要理解区间的概念,并运用排序和插入算法。 6. PartitionLabels - 将字符串划分为尽可能多的部分,使得每个字母...

    _leetcode-python.pdf

    - Insert Interval: 在一组已经排序的区间中,插入一个新的区间。 - Rotate List: 给定一个链表的头节点head,当旋转了k个位置后,返回链表的新头节点。 - Unique Paths / Unique Paths II: 前者计算从矩阵的左上角...

    LeetCode最全代码

    ...The number of questions is increasing recently. Here is the classification of all `468` questions. ...I'll keep updating for full summary and better solutions....|-----|---------------- | --------------- |...

    颜色分类leetcode-leetcode.etc:OJ、leetcode等解决方案

    颜色分类leetcode leetcode.etc My solutions of the problems in Online judge website, leetcode, lintcode, etc. leetcode: 13 ...Insert Interval Easy Two Strings Are Anagrams(比较字符串) E

    leetcode答案-exercise-book:算法练习记录

    Interval 解决方法:遍历 LeetCode: 229. Majority Element II 解决方法:Majority Voting算法的变种。但是最终的算法实现形式,很难理解。 2018-08-19 19:16 LeetCode: 79. Word Search 解决方法:DFS LeetCode: 31...

    gasstationleetcode-LeetCode:力码

    LifeInterval57Insert Interval56Merge Intervals252Meeting Rooms253Meeting客房II352Data流从数据Stream53Maximum Subarray325Maximum大小子阵总和脱节IntervalsTreeMapCounter239Sliding窗口Maximum295Find中位数...

    前端开源库-node-interval-tree

    4. 插入区间:`tree.insert(intervalStart, intervalEnd, data)`,其中`intervalStart`和`intervalEnd`是区间的起始和结束,`data`是关联的数据。 5. 查询:`tree.search(intervalStart, intervalEnd)`,返回与查询...

    INTERVAL_tree

    在这个项目中,头文件可能包含了`IntervalTree`类的定义,其中包括构造函数、析构函数以及之前提到的`insert`、`query`、`remove`等成员函数的声明。 区间树在实际应用中有很多用途,例如在数据库索引、日程安排、...

    使用Oracle中的时间间隔型数据

    INSERT INTO experiment VALUES (1, 'Busted urban myth', '01-JUN-2006 02:00:00 PM', INTERVAL '1 2:31:15.1250' DAY(1) TO SECOND(4)); ``` 查询实验结束时间: ```sql SELECT experiment_id, experiment_start,...

Global site tag (gtag.js) - Google Analytics