首页 > 编程语言 >每日算法之四十:Insert Interval

每日算法之四十:Insert Interval

时间:2023-07-20 16:38:46浏览次数:25  
标签:Insert newInterval end int res Interval start 算法 intervals


Given a set of non-overlapping

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]. 这个跟之前的合并类似,最好也是逐一考虑即可,记录好newInterval即可,记得最后要插入一次,函数有两个出口,两个出口都要处理好修改后的newInterval。

/**
 * Definition for an interval.
 * struct Interval {
 *     int start;
 *     int end;
 *     Interval() : start(0), end(0) {}
 *     Interval(int s, int e) : start(s), end(e) {}
 * };
 */

 class Solution {
public:
    vector<Interval> insert(vector<Interval> &intervals, Interval newInterval) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
    //Given [1,2],[3,5],[6,7],[8,10],[12,16], insert and merge [4,9] in as [1,2],[3,10],[12,16].
      int size = intervals.size();
      vector<Interval> res;
      for(int i = 0; i < size; i++)
      {
          if(intervals[i].end < newInterval.start )
                res.push_back(intervals[i]);
          else if(intervals[i].start > newInterval.end)
          {
                res.push_back(newInterval);
                res.insert(res.end(),intervals.begin() + i, intervals.end() );
                return res;
          }
          else
          {
              newInterval.start = min(newInterval.start, intervals[i].start);
              newInterval.end   = max(newInterval.end, intervals[i].end);
          }
      }
      res.push_back(newInterval);
      return res;
    }
 };







标签:Insert,newInterval,end,int,res,Interval,start,算法,intervals
From: https://blog.51cto.com/u_7013839/6787824

相关文章

  • 上班摸鱼刷算法-Java-hot100-[160]相交链表
    publicclassSolution{publicListNodegetIntersectionNode(ListNodeheadA,ListNodeheadB){if(headA==null||headB==null){returnnull;}ListNodepA=headA;ListNodepB=headB;while(pA......
  • 上班摸鱼刷算法-Java-hot100-[21]合并两个有序链表
    //将一个链表插入到另一个链表中classSolution{publicListNodemergeTwoLists(ListNodelist1,ListNodelist2){if(list1==null){returnlist2;}if(list2==null){returnlist1;}retur......
  • java十大算法
    Java十大算法Java是一门广泛应用于大量软件开发领域的编程语言。在Java的生态系统中,有许多重要的算法和数据结构,这些算法和数据结构在各个领域中被广泛使用。在本文中,我们将介绍Java中的十大算法,并通过代码示例来解释它们的工作原理。1.排序算法排序算法是计算机科学中最基本和......
  • 6大常用基础算法
    6大常用基础算法1冒泡排序(BubbleSort)基本思想两个数比较大小,比较大的数下沉,比较小的数冒起来。时间复杂度O(n)2代码```inta[]={15,4,3,2,8,0,7};intlength=sizeof(a)/size(a[0]);voidasd(inta[],intlength){inttemp;for(inti=0;i<length-1;i++){......
  • 装饰器/递归/算法
    多层装饰"""语法糖会将紧挨着的被装饰对象的名字当做参数自动传入装饰器函数中"""#判断七句print执行顺序defoutter1(func1):print('加载了outter1')打印顺序③和前面的定义对应defwrapper1(*args,**kwargs):print('执行了wrapper1')打印顺序④......
  • C#城市线路图的纯算法以及附带求极权值
    ​ 常用的数据结构写出来纯属于算法性方面还有待提高时间复杂度最坏情况下O(2^n) 最优:O(n^2)线路图为双向带有权值 比如A-B距离是5000km那么B-A有可能不是5000km所以我在LoadData方法时候没做交换变量直接存放在集合里面以起点递归查找下一连接点并返回当作起点节......
  • ISP之红外图像增强处理算法
    1、红外图像1.1红外图像特点红外图像一般具有以下特点(一般中长波特点更明显):1)红外图像表征景物的温度分布,反映目标及背景向外辐射能量的差异,是灰度图像,像素分辨率低;2)红外探测气球收到加工工艺影响,靶面分辨率较低,1280x1024分辨率属于高分辨率,640x512的规格较多;3)红外波段会受到......
  • 优化基础4——分支定界法与粒子群算法
    1.分支定界算法王源大佬在这里讲的很清楚,看这个整数规划里面的内容就可以看懂【整数规划(三)】分支定界法及其代码实现-知乎(zhihu.com)主要在于如何分支、如何根据每个节点的上下界确定全局上下界、如何剪枝2.粒子群混合粒子群算法(PSO):C++实现TSP问题-知乎(zhihu.com......
  • 算法练习-day21
    回溯算法77.组合题意:给定两个整数 n 和 k,返回范围 [1,n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。示例:   思路:本题的思想,主要是利用回溯的思想,先固定tmp插入的个数为k,当检测到tmp的大小等于k时,直接加入到我们的存储组合数组arr中,这时回溯一趟的......
  • 文心一言 VS 讯飞星火 VS chatgpt (63)-- 算法导论6.5 2题
    文心一言VS讯飞星火VSchatgpt(63)--算法导论6.52题二、试说明MAX-HEAP-INSERT(A,10)在堆A=(15,13,9,5,12,8,7,4,0,6,2,1)上的操作过程。文心一言:MAX-HEAP-INSERT(A,10)是将元素10插入到堆A中并保持堆性质的函数。下面是在堆A=(15,13,9,5,12,8,7,4,0,6,2,1)上执行MAX-......