跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • [leetcode/lintcode 题解] Facebook 脸书面试题:插入区间
未分類
4 4 月 2021

[leetcode/lintcode 题解] Facebook 脸书面试题:插入区间

[leetcode/lintcode 题解] Facebook 脸书面试题:插入区间

資深大佬 : zzzrf 0

题目描述可以看这里

算法:模拟

只要依次遍历,判断当前元素与要插入元素的关系。

  • 如当前元素的右端点小于插入元素的左端点,则说明当前元素与插入元素无交并。

  • 如当前元素的左端点大于插入元素的右端点,也说明当前元素与插入元素无交并。

依次遍历,判断当前元素与要插入元素的关系,找到插入点,插入这个新区间

  • 若是相交的,那么就停止比较,把要插入元素和当前元素合并成新区间 因为合并后的新区间也许和右边的元素有交集,会引起连锁反应,所以一直和右边的元素合并,直到无法合并为止

复杂度分析

  • 时间复杂度 O(n)
    • n 为数组的大小
  • 空间复杂度 O(n)
    • n 为数组的大小

代码

/**  * Definition of Interval:  * public classs Interval {  *     int start, end;  *     Interval(int start, int end) {  *         this.start = start;  *         this.end = end;  *     }  */    public class Solution {     /*      * @param intervals: Sorted interval list.      * @param newInterval: new interval.      * @return: A new interval list.      */     public List<Interval> insert(List<Interval> intervals, Interval newInterval) {         List<Interval> newIntervals = new ArrayList<Interval>();         if(intervals.size() == 0){             newIntervals.add(newInterval);         }         for (int i = 0; i < intervals.size(); i++) {             // 如果新区间的结束值小于区间开始值,插在这里,后面续上             if (newInterval.end < intervals.get(i).start) {                 newIntervals.add(newInterval);                 for (int j = i; j < intervals.size(); j++) {                     newIntervals.add(intervals.get(j));                 }                 break;             }             // 如果新区间的开始值大于区间结束值,把当前区间加进去             else if (newInterval.start > intervals.get(i).end) {                 newIntervals.add(intervals.get(i));             }             // 出现交叉,需要合并             else {                 newInterval.start = Math.min(newInterval.start, intervals.get(i).start);                 newInterval.end = Math.max(newInterval.end, intervals.get(i).end);             }             // 最后只剩一个数据了,添加进去             if(i == intervals.size() - 1){                 newIntervals.add(newInterval);             }         }         return newIntervals;     } } 

大佬有話說 (0)

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具