• LeetCode: 57. Insert Interval(Hard)


    1. 原题链接

    https://leetcode.com/problems/insert-interval/description/

    2. 题目要求

    该题与上一题的区别在于,插入一个新的interval对象,将此对象与所给列表里的Interval对象进行合并。

    3. 解题思路

    首先遍历Interval对象列表,找到插入位置。将插入位置之前的列表中的Interval对象直接加入结果列表。

    然后查找所要插入Interval对象的end属性在列表中的位置。

    最后将列表中剩余的Interval对象全部加入结果列表。

    4. 代码实现

    import java.util.LinkedList;
    import java.util.List;
    
    public class InsertIntervals57 {
    
        public static void main(String[] args) {
    
            Interval in1 = new Interval(1, 2);
            Interval in2 = new Interval(3, 5);
            Interval in3 = new Interval(6, 7);
            Interval in4 = new Interval(8, 10);
            Interval in5 = new Interval(12, 16);
            Interval in = new Interval(4, 9);
            List<Interval> ls = new LinkedList<Interval>();
            ls.add(in1);
            ls.add(in2);
            ls.add(in3);
            ls.add(in4);
            ls.add(in5);
            for (Interval i : insert(ls, in))
                System.out.println(i.start + " " + i.end);
    
        }
    
        public static List<Interval> insert(List<Interval> intervals, Interval interval) {
    
            List<Interval> res = new LinkedList<Interval>();
            if (intervals.size() == 0) {
                res.add(interval);
                return res;
            }
            int i = 0;
    
            // 将插入位置之前的元素直接加入结果列表中
            while (i < intervals.size() && intervals.get(i).end < interval.start) {
                res.add(intervals.get(i++));
            }
    
            // 将所要插入的元素与李彪中的对象进行合并
            while (i < intervals.size() && intervals.get(i).start <= interval.end) {
                interval = new Interval( // we could mutate newInterval here also
                        Math.min(interval.start, intervals.get(i).start),
                        Math.max(interval.end, intervals.get(i).end));
                i++;
            }
            res.add(interval);
    
            // 将剩余的所有元素插入结果列表
            while (i < intervals.size())
                res.add(intervals.get(i++));
            return res;
        }
    }
    

      

  • 相关阅读:
    三维聚源
    js--继承
    1.名字忘了
    html5--画布
    Html批量读取json
    get获取Json
    5-jQuery
    Sublime Text
    Redis,JedisPool工具类
    向指定url发送Get/Post请求
  • 原文地址:https://www.cnblogs.com/huiAlex/p/8386318.html
Copyright © 2020-2023  润新知