LeetCode刷题191124
博主渣渣一枚,刷刷leetcode给自己瞅瞅,大神们由更好方法还望不吝赐教。题目及解法来自于力扣(LeetCode),传送门。
算法:
给出一个无重叠的 ,按照区间起始端点排序的区间列表。
在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。
示例 1:
输入: intervals = [[1,3],[6,9]], newInterval = [2,5]
输出: [[1,5],[6,9]]
示例 2:
输入: intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]
输出: [[1,2],[3,10],[12,16]]
解释: 这是因为新的区间 [4,8] 与 [3,5],[6,7],[8,10] 重叠。
public class Solution {
public int[][] Insert(int[][] intervals, int[] newInterval)
{
var start = ;
var end = ;
bool NeedMergeStar = false;
bool NeddMergeEnd = false;
var result = new List<int[]>();
while (start < intervals.Length)
{
if (intervals[start][] == newInterval[] || (intervals[start][] < newInterval[] && intervals[start][] >= newInterval[]))
{
NeedMergeStar = true;
break;
}
else if (intervals[start][] > newInterval[])
{
break;
}
start++;
}
while (end < intervals.Length)
{
if (intervals[end][] == newInterval[] || (intervals[end][] > newInterval[] && intervals[end][] <= newInterval[]))
{
NeddMergeEnd = true;
break;
}
else if (intervals[end][] > newInterval[])
{
break;
}
end++;
}
var index = intervals.Length - ;
if (!NeedMergeStar && !NeddMergeEnd)
{
if (start == index && end == index)
{
if (intervals[][] > newInterval[])
{
result.Add(newInterval);
result.AddRange(intervals);
}
else if (intervals[index][] < newInterval[])
{
result.AddRange(intervals);
result.Add(newInterval);
}
else
{
result.AddRange(intervals);
result.Insert(start, newInterval);
}
}
else
{
if (start == end)
{
result.AddRange(intervals);
result.Insert(start, newInterval);
}
else
{
result.AddRange(intervals);
for (int i = start; i < end; i++)
{
result.RemoveAt(start);
}
result.Insert(start, newInterval);
}
}
}
else
{
result.AddRange(intervals);
if (NeedMergeStar && !NeddMergeEnd)
{
if (start == end)
{
result[start][] = Math.Max(result[start][], newInterval[]);
}
else
{
newInterval[] = intervals[start][];
for (int i = start; i < end; i++)
{
result.RemoveAt(start);
}
result.Insert(start, newInterval);
}
}
else if (!NeedMergeStar && NeddMergeEnd)
{
if (start == end)
{
result[start][] = Math.Min(result[start][], newInterval[]);
}
else
{
newInterval[] = intervals[end][];
for (int i = start; i <= end; i++)
{
result.RemoveAt(start);
}
result.Insert(start, newInterval);
}
}
else
{
newInterval[] = intervals[start][];
newInterval[] = intervals[end][];
for (int i = start; i <= end; i++)
{
result.RemoveAt(start);
}
result.Insert(start, newInterval);
}
}
return result.ToArray();
}
}
分情况讨论的,效率不是很高emmm。
LeetCode刷题191124的更多相关文章
- LeetCode刷题专栏第一篇--思维导图&时间安排
昨天是元宵节,过完元宵节相当于这个年正式过完了.不知道大家有没有投入继续投入紧张的学习工作中.年前我想开一个Leetcode刷题专栏,于是发了一个投票想了解大家的需求征集意见.投票于2019年2月1日 ...
- leetcode 刷题进展
最近没发什么博客了 凑个数 我的leetcode刷题进展 https://gitee.com/def/leetcode_practice 个人以为 刷题在透不在多 前200的吃透了 足以应付非算法岗 ...
- LeetCode刷题指南(字符串)
作者:CYC2018 文章链接:https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/Leetcode+%E9%A2%98%E8%A7% ...
- leetcode刷题记录--js
leetcode刷题记录 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但 ...
- LeetCode刷题总结之双指针法
Leetcode刷题总结 目前已经刷了50道题,从零开始刷题学到了很多精妙的解法和深刻的思想,因此想按方法对写过的题做一个总结 双指针法 双指针法有时也叫快慢指针,在数组里是用两个整型值代表下标,在链 ...
- Leetcode刷题记录(python3)
Leetcode刷题记录(python3) 顺序刷题 1~5 ---1.两数之和 ---2.两数相加 ---3. 无重复字符的最长子串 ---4.寻找两个有序数组的中位数 ---5.最长回文子串 6- ...
- LeetCode刷题总结-数组篇(上)
数组是算法中最常用的一种数据结构,也是面试中最常考的考点.在LeetCode题库中,标记为数组类型的习题到目前为止,已累计到了202题.然而,这202道习题并不是每道题只标记为数组一个考点,大部分习题 ...
- LeetCode刷题总结-数组篇(中)
本文接着上一篇文章<LeetCode刷题总结-数组篇(上)>,继续讲第二个常考问题:矩阵问题. 矩阵也可以称为二维数组.在LeetCode相关习题中,作者总结发现主要考点有:矩阵元素的遍历 ...
- LeetCode刷题总结-数组篇(下)
本期讲O(n)类型问题,共14题.3道简单题,9道中等题,2道困难题.数组篇共归纳总结了50题,本篇是数组篇的最后一篇.其他三个篇章可参考: LeetCode刷题总结-数组篇(上),子数组问题(共17 ...
随机推荐
- HDU1517 Multiply Game
Stan and Ollie play the game of multiplication by multiplying an integer p by one of the numbers 2 t ...
- Codeforce612C
You are given string s consists of opening and closing brackets of four kinds <>,{}, [], (). T ...
- Vue - watch高阶用法
1. 不依赖新旧值的watch 很多时候,我们监听一个属性,不会使用到改变前后的值,只是为了执行一些方法,这时可以使用字符串代替 data:{ name:'Joe' }, watch:{ name:' ...
- 【JS】303- 编写更好的 JavaScript 条件式和匹配条件的技巧
译者:@chorer 译文:https://chorer.github.io/2019/06/24/Trs-更好的JavaScript条件式和匹配标准技巧/作者:@Milos Protic原文:htt ...
- js中promise解决callback回调地狱以及使用async+await异步处理的方法
1.callback回调地狱 function ajax(fn) { setTimeout(()=> { console.log('你好') fn() }, 1000) } ajax(() =& ...
- React中setState学习总结
react中setState方法到底是异步还是同步,其实这个是分在什么条件下是异步或者同步. 1.先来回顾一下react组件中改变state的几种方式: import React, { Compone ...
- python爬虫--图片懒加载
图片懒加载 是一种反爬机制,图片懒加载是一种网页优化技术.图片作为一种网络资源,在被请求时也与普通静态资源一样,将占用网络资源,而一次性将整个页面的所有图片加载完,将大大增加页面的首屏加载时间.为了解 ...
- Python 浮点数的冷知识
本周的PyCoder's Weekly 上分享了一篇小文章,它里面提到的冷知识很有意思,我稍作补充,分享给大家. 它提到的部分问题,读者们可以先思考下: 若两个元组相等,即 a==b 且 a is b ...
- 5. abp集成asp.net core
一.前言 参照前篇<4. abp中的asp.net core模块剖析>,首先放张图,这也是asp.net core框架上MVC模块的扩展点 二.abp的mvc对象 AbpAspNetCor ...
- UiPath Platform注册 登录 及 访问 Orchestrator
相关步骤: 1.https://platform.uipath.com/portal_/cloudrpa 注册 及 登录 2. Login后 通过Services 连接 访问 UiPath Orche ...