有些hard在于算法难,思路难想;有些hard在于corner case多,这题就是后者。

这题跟56. Merge Intervals是类似的,而且这个是已经排好了顺序给你;但是难度并没有下降,我觉得这种题目就是把所有可能的case都cover到就能AC了,但是往往可能你在纸上画都不一定能画得全,这可能也就是hard的原因(我在纸上画了)。这次我试了一下,一共调试了5次,start和end用max/min比较分别占了一次。这种题我感觉看答案只会被牵着鼻子走,自己要覆盖到所有的corner case才行。另外,一道题如果耗时太长脑力必然会严重下降。所以尽量速战速决。

 public List<Interval> insert(List<Interval> intervals, Interval newInterval) {List<Interval> res = new ArrayList<>();//corner case1if (intervals.isEmpty()) {res.add(newInterval);return res;}while (!intervals.isEmpty()) {if (intervals.get(0).start < newInterval.start && intervals.get(0).end < newInterval.start) {res.add(intervals.remove(0));} else {break;}}if (intervals.isEmpty()) {res.add(newInterval);return res;}//这里开始的intervals list第一个元素的end一定比newInterval的start大//1. won't overlappingif (intervals.get(0).start > newInterval.end) {res.add(newInterval);res.addAll(intervals);return res;}//2. wrapped by the 1st intervalif (intervals.get(0).start <= newInterval.start && intervals.get(0).end >= newInterval.end) {res.addAll(intervals);return res;}//3. overlappingInterval head = intervals.get(0);if (head == null) return res;int start = Math.min(head.start, newInterval.start);int end;while (newInterval.end >= head.end && intervals.size() > 1) {intervals.remove(0);head = intervals.get(0);}if (newInterval.end < intervals.get(0).start) {end = newInterval.end;res.add(new Interval(start, end));res.addAll(intervals);return res;}if (newInterval.end >= intervals.get(0).start) {end = Math.max(intervals.remove(0).end, newInterval.end);res.add(new Interval(start, end));res.addAll(intervals);return res;}// should have covered all possible casesreturn null;}
复制代码

短的方法见: https://discuss.leetcode.com/topic/7808/short-and-straight-forward-java-solution

转载于:https://juejin.im/post/5a3132f8f265da430f321926

57 Insert Interval相关推荐

  1. 【细节实现题】LeetCode 57. Insert Interval

    LeetCode 57. Insert Interval Solution1:我的答案 算法很简单,不知道为何会被标记为hard题目 /*** Definition for an interval.* ...

  2. 57. Insert Interval

    description: 插入新的区间,涉及到区间的合并. Note: Example: Example 1:Input: intervals = [[1,3],[6,9]], newInterval ...

  3. Insert Interval

    Insert Interval 题解 题目描述 即向有序.不重叠的区间序列中插入一个区间.如区间产生重叠,则合并.求插入新区间后的区间序列. 如:A = [1,3],[6,9],插入[2,6],插入后 ...

  4. 057 Insert Interval 插入区间

    给出一个无重叠的按照区间起始端点排序的区间列表. 在列表中插入一个新的区间,你要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间). 示例 1: 给定区间 [1,3],[6,9],插入并 ...

  5. LeetCode57 Insert Interval

    题目: Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if nec ...

  6. 合并区间 · Merge Intervals 插入区间 · Insert Interval

    [抄题]: 给出若干闭合区间,合并所有重叠的部分. 给出的区间列表 => 合并后的区间列表: [ [[1, 3], [1, 6],[2, 6], => [8, 10],[8, 10], [ ...

  7. LeetCode刷题指南(一)

    以下是我个人做题过程中的一些体会: 1. LeetCode的题库越来越大,截止到目前,已经有321个问题了.对于大多数人来说,没有时间也没有必要把所有题目都做一遍(时间充裕可以随意).刷个100题左右 ...

  8. Leetcode重点250题

    LeetCode重点250题 这个重点题目是把LeetCode前400题进行精简.精简方法如下: 删除不常考,面试低频出现题目 删除重复代码题目(例:链表反转206题,代码在234题出现过) 删除过于 ...

  9. Leetcode刷题指南和top100题目

    原文链接:https://blog.csdn.net/qq_39521554/article/details/79160815 参考博文:https://blog.csdn.net/mmc2015/a ...

  10. 【LeetCode题解】排序

    1. 排序 排序(sort)是一种常见的算法,把数据根据特定的顺序进行排列.经典的排序算法如下: 冒泡排序(bubble sort) 插入排序(insertion sort) 选择排序(selecti ...

最新文章

  1. 刚刚用华为鸿蒙跑了个“hello world”!跑通后,我特么开始怀疑人生....
  2. 中传计算机应用研究生分数线,2018中国传媒大学考研复试分数线(含2016-2018年)...
  3. Python编程基础:第四十九节 鸭子类型Duck Typing
  4. Java文件字节流和字符流FileInputStream,FileOutputStream,FileReader,FileWriter
  5. 程序设计方法的发展历程
  6. 百度代码规范 -- PHP
  7. mysql 辅助索引_MySQL InnoDB B+tree索引
  8. 机器学习-octave使用
  9. 关闭selinux服务
  10. 相聚“金巴蜀”、付诸笑谈中
  11. 心淡淡的幸福[lyb521569]
  12. LVGL使用华为鸿蒙字体
  13. VS2019、VS2017、VS2013产品密钥
  14. 【案例分享】利用Python识别图片中的文字
  15. MongoDB操作文件
  16. 描述性物理海洋学--第四章学习笔记
  17. 云计算会不会被边缘计算取而代之
  18. 【shell】shell是什么,shell脚本又是什么?
  19. html 嵌入页面,html5页面嵌入
  20. 深度学习入门 FashionMNIST数据集训练和测试(30层神经网路)

热门文章

  1. Atitit.自定义jdbc驱动  支持jsql
  2. paip.python错误解决21
  3. paip.c++ qt messagebox用法
  4. PAIP.ASP技术手册
  5. Cephalocon 2020首尔峰会取消
  6. CMP?MSP?1+1才能大于2
  7. 【预测模型】基于matlab粒子群算法预测【含Matlab源码 1326期】
  8. 【二维码识别】基于matlab GUI 灰度+二值化+校正二维码生成与识别【含Matlab源码 635期】
  9. 【语音分析】基于matlab语音短时时域分析【含Matlab源码 559期】
  10. 【游戏】基于matlab中国象棋【含Matlab源码 489期】