【力扣每日一题/04】57. 插入区间

简介: 【力扣每日一题/04】57. 插入区间


C#中对于list的取值,直接使用:list[i]

1. 题目描述

2. 题目分析

  • intervals 代表初始的区间,newInterval 代表了想要插入的区间

  • 如果 intervals 的左边界大于 newInterval[1]list.Add(new int[] { intervals[i][0], intervals[i][1] });
  • 如果 intervals 的右边界小于 newInterval[0]list.Add(new int[] { intervals[i][0], intervals[i][1] });
  • 如果intervals的左右边界和newInterval有交集:
  • left = Math.Min(left, intervals[i][0]);
  • right = Math.Max(right, intervals[i][1]);
  • 什么时候需要把 [left,right] 加入 list 中呢?当我们 intervals 的左边界大于 newInterval[1] 时,需要进行加入并且用标记位flag进行标记
  • 如果,最后的标记位为false,也就是我们的 [left,right] 没有被加入 list 中,需要执行list.Add(new int[] { left, right });
  • 最后返回return list.ToArray();

3. 题目代码

public int[][] Insert(int[][] intervals, int[] newInterval)
        {
            int left = newInterval[0];
            int right = newInterval[1];
            List<int[]> list = new List<int[]>();
            bool flag = false;
            for (int i = 0; i < intervals.Length; i++)
            {
                if (intervals[i][0] > right)
                {
                    if (!flag)
                    {
                        flag = true;
                        list.Add(new int[] { left, right });
                    }
                    list.Add(new int[] { intervals[i][0], intervals[i][1] });
                }
                else if (intervals[i][1] < left)
                {
                    list.Add(new int[] { intervals[i][0], intervals[i][1] });
                }
                else
                {
                    left = Math.Min(left, intervals[i][0]);
                    right = Math.Max(right, intervals[i][1]);
                }
            }
            if (!flag)
            {
                list.Add(new int[] { left, right });
            }
            return list.ToArray();
        }


相关文章
|
7月前
|
算法 测试技术 C#
【二分查找】【区间合并】LeetCode2589:完成所有任务的最少时间
【二分查找】【区间合并】LeetCode2589:完成所有任务的最少时间
|
7月前
|
算法 测试技术 C#
区间合并|LeetCode2963:统计好分割方案的数目
区间合并|LeetCode2963:统计好分割方案的数目
|
7月前
|
Go
golang力扣leetcode 56.合并区间
golang力扣leetcode 56.合并区间
78 0
|
7月前
leetcode-435:无重叠区间
leetcode-435:无重叠区间
35 0
|
2月前
|
算法
Leetcode第57题(插入区间)
LeetCode第57题“插入区间”的解题方法,包括题目描述、示例、算法思路和代码实现,旨在解决将新区间插入有序且不重叠的区间列表中,并合并重叠区间的问题。
24 0
Leetcode第57题(插入区间)
|
4月前
|
算法
LeetCode第57题插入区间
LeetCode第57题"插入区间"的解题方法,利用原区间集有序的特性,通过三步插入操作,有效实现了新区间的插入和重叠区间的合并。
LeetCode第57题插入区间
|
6月前
|
存储 算法 测试技术
力扣经典150题第四十七题:汇总区间
力扣经典150题第四十七题:汇总区间
49 1
|
6月前
|
存储 SQL 算法
高效日程管理:利用区间合并算法优化活动安排【python LeetCode57】
高效日程管理:利用区间合并算法优化活动安排【python LeetCode57】
|
6月前
|
存储 算法 搜索推荐
掌握区间合并:解决实际问题的算法策略和应用案例【python LeetCode题目56】
掌握区间合并:解决实际问题的算法策略和应用案例【python LeetCode题目56】
|
6月前
|
存储 算法 数据可视化
【模拟面试问答】深入解析力扣163题:缺失的区间(线性扫描与双指针法详解)
【模拟面试问答】深入解析力扣163题:缺失的区间(线性扫描与双指针法详解)