57. Insert Interval
来源:互联网 发布:什么是sql注入攻击 编辑:程序博客网 时间:2024/06/11 16:18
第一种法:这道题可以借助Merge Intervals里面的代码,先将新的间隔加入到数组中,然后合并即可。时间复杂度是O(nlogn)。
class Solution {public: static bool comp(const Interval &a, const Interval &b) { return a.start<b.start; } vector<Interval> insert(vector<Interval>& intervals, Interval newInterval) { if(intervals.empty()) { intervals.push_back(newInterval); return intervals; } intervals.push_back(newInterval); sort(intervals.begin(),intervals.end(),comp); int i; vector<Interval>ret; Interval node1=intervals[0]; for(i=1;i<intervals.size();i++) { Interval node2=intervals[i]; if(node1.end<node2.start) { ret.push_back(node1); node1=node2; } else { node1.end=node2.end>node1.end?node2.end:node1.end; } } ret.push_back(node1); return ret; }};
第二种方法:也可以不排序,直接插入时间间隔,插入的时间间隔的位置可以分成三部分:
插入位置左侧
插入位置(有重叠或无重叠)
插入位置右侧
这三个部分分别处理,只有在插入位置处理可能存在的情况即可。
class Solution {public: vector<Interval> insert(vector<Interval>& intervals, Interval newInterval) { if(intervals.empty()) { intervals.push_back(newInterval); return intervals; } int i=0; vector<Interval>ret; while(i<intervals.size()) { if(intervals[i].end<newInterval.start)//插入位置在右侧 ret.push_back(intervals[i]); else if(newInterval.end<intervals[i].start)//插入位置在左侧 { ret.push_back(newInterval); while(i<intervals.size()) { ret.push_back(intervals[i]); i++; } return ret; } else//有重叠的情况 { newInterval.start=newInterval.start<intervals[i].start?newInterval.start:intervals[i].start; newInterval.end=newInterval.end>intervals[i].end?newInterval.end:intervals[i].end; } i++; } ret.push_back(newInterval); return ret; }};
0 0
- LeetCode --- 57. Insert Interval
- [Leetcode] 57. Insert Interval
- [LeetCode]57.Insert Interval
- [leetcode] 57.Insert Interval
- 57. Insert Interval
- [leetcode] 57.Insert Interval
- 57. Insert Interval
- 57. Insert Interval
- lkeetcode 57. Insert Interval
- 57. Insert Interval
- Leetcode 57. Insert Interval
- LeetCode 57. Insert Interval
- 57. Insert Interval
- 57. Insert Interval
- 57. Insert Interval
- 57. Insert Interval
- LeetCode 57. Insert Interval
- [LeetCode] 57. Insert Interval
- iOS开发- try catch
- hyperledger fabric 结构分析(二)
- lamp之源码包安装php
- MATLAB自带工具箱实现PCA降维代码,着重介绍实现方法
- (笔记)英腾技术开发实习生面试技术题(答案分析)
- 57. Insert Interval
- 简单的ViewPager实现
- java 二维码原理以及用java实现的二维码的生成、解码
- JVM的内存区域划分
- C语言枚举enum的定义
- sublime_markdown
- 程序员什么时候该考虑辞职
- 关于opencv中Mat数据对齐的问题
- 编程思想:面向对象和面向过程