力扣刷题记录整理——(十六)intervals

ops/2024/9/25 21:30:42/

文章目录

  • 前言
  • 一、预备知识
  • 二、解题思路
    • 1.排序
      • 56.merge-intervals
      • 57.insert-interval
      • 435.non-overlapping-intervals
      • 1851.minimum-interval-to-include-each-query


前言

整理力扣刷题思路。

  • 语言:python
  • 题库:来自neetcode: link

一、预备知识


二、解题思路

1.排序

56.merge-intervals

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。
link

python">class Solution:def merge(self, intervals: List[List[int]]) -> List[List[int]]:intervals.sort()ans = []for inter in intervals:if not ans or ans[-1][1]<inter[0]:ans.append(inter)else:ans[-1][1] = max(ans[-1][1],inter[1])return ans

57.insert-interval

给你一个 无重叠的 ,按照区间起始端点排序的区间列表 intervals,其中 intervals[i] = [starti, endi] 表示第 i 个区间的开始和结束,并且 intervals 按照 starti 升序排列。同样给定一个区间 newInterval = [start, end] 表示另一个区间的开始和结束。

在 intervals 中插入区间 newInterval,使得 intervals 依然按照 starti 升序排列,且区间之间不重叠(如果有必要的话,可以合并区间)。

返回插入之后的 intervals。

注意 你不需要原地修改 intervals。你可以创建一个新数组然后返回它。
link

python">class Solution:def insert(self, intervals: List[List[int]], newInterval: List[int]) -> List[List[int]]:intervals.append(newInterval)intervals.sort()ans = []for inter in intervals:if not ans or ans[-1][1]<inter[0]:ans.append(inter)else:ans[-1][1] = max(ans[-1][1],inter[1])return ans

参考56合并区间的做法

435.non-overlapping-intervals

给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。
link

python">class Solution:def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:if len(intervals) < 2:return 0intervals.sort(key = lambda x: x[1])cnt = 0r = intervals[0][1]for i in intervals[1:]:#无重叠,边界移到下一个if r <= i[0]:r = i[1]#有重叠,去掉右边界较大的一个else:cnt += 1r = min(r, i[1])return cnt

1851.minimum-interval-to-include-each-query

给你一个二维整数数组 intervals ,其中 intervals[i] = [lefti, righti] 表示第 i 个区间开始于 lefti 、结束于 righti(包含两侧取值,闭区间)。区间的 长度 定义为区间中包含的整数数目,更正式地表达是 righti - lefti + 1 。

再给你一个整数数组 queries 。第 j 个查询的答案是满足 lefti <= queries[j] <= righti 的 长度最小区间 i 的长度 。如果不存在这样的区间,那么答案是 -1 。

以数组形式返回对应查询的所有答案。
link

python">from heapq import *
class Solution:def minInterval(self, intervals: List[List[int]], queries: List[int]) -> List[int]:intervals.sort()ans,minHeap = {},[]i = 0for q in sorted(queries):#左边界不大于q,则q有可能在此区间,所以入堆while i<len(intervals) and intervals[i][0]<=q:heappush(minHeap,[intervals[i][1]-intervals[i][0]+1, intervals[i][1]])i += 1#若右边界小于q,则q不在此区间,弹出while minHeap and minHeap[0][1]<q:heappop(minHeap)ans[q] = minHeap[0][0] if minHeap else -1return [ans[q] for q in queries]

参考neetcode配套视频


http://www.ppmy.cn/ops/29507.html

相关文章

Tableau面试题及参考答案

什么是Tableau? Tableau 是一款强大的数据可视化和商业智能工具,它允许用户通过直观的拖放界面连接到各种数据源,创建交互式和可共享的仪表板与报告。Tableau 的设计理念是使数据的分析和理解变得简单,即便是没有深厚技术背景的用户也能够轻松地探索和展示数据背后的故事。…

信息系统项目管理师0083:项目管理的重要性(6项目管理概论—6.2项目基本要素—6.2.2项目管理的重要性)

点击查看专栏目录 文章目录 6.2.2项目管理的重要性 6.2.2项目管理的重要性 项目管理就是将知识、技能、工具与技术应用于项目活动&#xff0c;以满足项目的要求。通过合理地应用并整合特定的项目管理过程&#xff0c;项目管理使组织能够有效并高效地开展项目。 有效的项目管理能…

安卓平台上的React Native技术研究:核心概念、优劣分析与应用场景

摘要 随着跨平台移动应用开发的兴起&#xff0c;React Native作为一种基于JavaScript和React的框架&#xff0c;逐渐受到开发者的关注。React Native允许开发者使用一套代码库构建高性能、美观的跨平台移动应用。本文将详细介绍安卓React Native的概述、核心概念、优劣分析及应…

Android C++ 开发调试 LLDB 工具的使用

文章目录 调试环境准备基础命令Breakpoint CommandsWatchpoint CommandsExamining VariablesEvaluating ExpressionsExamining Thread StateExecutable and Shared Library Query Commands 参考&#xff1a; Android 中在进行 NDK 开发的时候&#xff0c;我们经常需要进行 C 代…

通讯录(基于单链表)

通讯录&#xff08;基于单链表&#xff09; 我们知道 链表是由一个个节点组成的&#xff0c;我们让节点的数据域去存储一个结构体 这个结构体是存储联络人数据的一个结构体&#xff0c;里面放着许多信息&#xff1a; // 要在链表的每一个节点中存储联系人数据 // 那我们就要…

DNS、ICMP、NAT以及代理服务器

目录 1. DNS 1.1. DNS 背景 1.2. 域名简介 1.3. 域名解析过程 2. ICMP 2.1. ICMP 的功能 2.2. ICMP 的报文格式 2.3. ping 命令 2.4. traceroute 命令 3. NAT和代理服务器 3.1. NAT 技术 3.2. NAT IP转换过程 3.3. NAT 技术的缺陷 3.4. 代理服务器 3.4.1. 正向…

C语言双向链表如何实现向指定索引位置插入元素

核心代码&#xff1a; int insertDoubleLinkedList(DoubleLinkedList *list, int index, int value) {if (list NULL || list->head NULL || list->tail NULL) {return -1;}// 当一个元素都没有的时候&#xff0c;或者indexsize的时候&#xff0c;是支持插入的if (in…

C++@vscode配置C++开发环境常见问题和实践经验

文章目录 abstractvscode配置C/C开发环境常见问题 FAQC/C共用一组tasks.json/launch.json文件?关于配置文件中的注释更快地编译运行调试时调用外部终端控制台二次编译失败问题编译多个源文件&#x1f60a;源文件组织 编译出的可执行文件名中文乱码&#x1f60a;修改tasks.json…