当前位置: 首页 > article >正文

【LeetCode 刷题】贪心算法(4)-区间问题

此博客为《代码随想录》贪心算法章节的学习笔记,主要内容为贪心算法区间问题的相关题目解析。

文章目录

  • 55. 跳跃游戏
  • 45. 跳跃游戏 II
  • 452. 用最少数量的箭引爆气球
  • 435. 无重叠区间
  • 763. 划分字母区间
  • 56. 合并区间

55. 跳跃游戏

题目链接

class Solution:def canJump(self, nums: List[int]) -> bool:mx = 0  # 最右可达位置for i, jump in enumerate(nums):if i > mx:return Falsemx = max(mx, i + jump)if mx >= len(nums) - 1:return True
  • 维护当前可达的最大右边界,当前下标位置不可达时,返回 Falsemx 已经 >= 最后一个元素的下标时,提前返回 True
  • 也可理解为区间合并问题,将每一个元素对应为 [i, i + jump] 的区间,求是否能够合并出右边界 >= 最后一个元素下标的大区间

45. 跳跃游戏 II

题目链接

class Solution:def jump(self, nums: List[int]) -> int:res = 0cur_rigth, next_right = 0, 0for i in range(len(nums) - 1):next_right = max(next_right, i + nums[i])if i == cur_rigth:cur_rigth = next_rightres += 1return res
  • 要求最小跳跃次数,因此不能每走一步都合并区间,而是应该走到当前步所能达到的尽头,再尝试进行一次跳跃;再当前步走的过程中,同时维护下一次跳跃所能到达的最远边界
  • 由于题目的测试用例均能够到达终点,因此无需特判无法到达的逻辑

452. 用最少数量的箭引爆气球

题目链接

class Solution:def findMinArrowShots(self, points: List[List[int]]) -> int:points.sort(key=lambda x: x[1])res = 0cur = -inffor start, end in points:if start > cur:cur = endres += 1return res
  • 按照区间右边界升序排列,每次射出的箭都处于当前区间的右边界,以尽可能多的同时覆盖其他区间
  • 一旦当前区间的右边界无法覆盖后续某个区间,则需要新的一支箭,同时射箭的位置调整为新区间的右边界

435. 无重叠区间

题目链接

class Solution:def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:intervals.sort(key=lambda x : x[1])res = 0cur_right = -inffor start, end in intervals:if start >= cur_right:res += 1cur_right = endreturn len(intervals) - res
  • 移除最少 等价于 保留最多
  • 同样按照区间右边界升序排列,如果当前区间的起点和之前的区间没有重叠(当前区间起点 >= 之前区间最大右边界),即保留当前区间

763. 划分字母区间

题目链接

class Solution:def partitionLabels(self, s: str) -> List[int]:dic = {}for idx, c in enumerate(s):dic[c] = idxcur_left, cur_right = 0, -infres = []for idx, c in enumerate(s):cur_right = max(cur_right, dic[c])if cur_right == idx:res.append(cur_right - cur_left + 1)cur_left = cur_right + 1cur_right = -infreturn res
  • 先统计每个字母出现的最后位置,之后按顺序遍历,如果当前所有出现过的字母的最后出现位置的最大值 == idx,则表示可以划分为一个合法区间

56. 合并区间

题目链接

class Solution:def merge(self, intervals: List[List[int]]) -> List[List[int]]:intervals.sort(key=lambda x: x[0])res = []for start, end in intervals:if res and start <= res[-1][1]:res[-1][1] = max(res[-1][1], end)else:res.append([start, end])return res
  • 按照区间左边界升序排列:因为题目要求返回合并后的区间,按照左边界排序后,如果发生区间合并,也无需修改合并区间左边界的值
  • res[-1] 保存着当前正在合并处理的区间
  • 此题与 “452. 用最少数量的箭引爆气球” 和 “435.无重叠区间” 不是相同的解题思路

相关文章:

【LeetCode 刷题】贪心算法(4)-区间问题

此博客为《代码随想录》贪心算法章节的学习笔记&#xff0c;主要内容为贪心算法区间问题的相关题目解析。 文章目录 55. 跳跃游戏45. 跳跃游戏 II452. 用最少数量的箭引爆气球435. 无重叠区间763. 划分字母区间56. 合并区间 55. 跳跃游戏 题目链接 class Solution:def canJu…...

提示工程 | 目的 | 常用技巧

什么是提示工程 提示工程也叫指令工程&#xff0c;Prompt就是你发给大模型的指令&#xff0c;比如&#xff1a;画幅画&#xff0c;写首诗等。貌似简单&#xff0c;但意义非凡&#xff0c;Prompt是AGI时代的编程语言&#xff0c;Prompt工程是AGI时代的软件工程&#xff0c;提示…...

ABP框架9——自定义拦截器的实现与使用

一、AOP编程 AOP定义:面向切片编程&#xff0c;着重强调功能&#xff0c;将功能从业务逻辑分离出来。AOP使用场景&#xff1a;处理通用的、与业务逻辑无关的功能&#xff08;如日志记录、性能监控、事务管理等&#xff09;拦截器:拦截方法调用并添加额外的行为&#xff0c;比如…...

Generate html

"Generate HTML"&#xff08;生成 HTML&#xff09;指的是通过程序或工具自动创建 HTML 代码的过程。HTML&#xff08;超文本标记语言&#xff09;是用于创建网页内容和结构的标准语言。生成 HTML 通常意味着通过某些方式自动化地构建或生成网页的结构和元素&#xf…...

CUDA 计算平台 CUDA 兼容性【笔记】

在 b 站看过的两个关于 CUDA 的技术分享&#xff0c;整理分享下对自己有用的课件。 20231130 2023第9期 聊一聊常见的AI计算平台库_哔哩哔哩_bilibili20230831 2023第6期 聊一聊CUDA兼容性_哔哩哔哩_bilibili 文章目录 CUDA 计算平台CUDA 函数库介绍英伟达三大护城河&#xff1…...

移动(新)魔百盒刷机教程[M301A_YS]

刚刚成功刷了一个坏的魔百盒&#xff0c;简单记录一下。 刷电视盒子有两种&#xff1a;卡刷和线刷。 线刷 一、线刷准备 1.刷机工具 Amlogic USB Burning Tool 晶晨线刷烧录工具 2.固件 根据盒子的型号、代工等找到对应的固件 二、线刷步骤 电脑打开下好的 Amlogic US…...

最新消息 | 德思特荣获中国创新创业大赛暨广州科技创新创业大赛三等奖!

2024年12月30日&#xff0c;广州市科技局公开第十三届中国创新创业大赛&#xff08;广东广州赛区&#xff09;暨2024年广州科技创新创业大赛决赛成绩及拟获奖企业名单&#xff0c;德思特获得了智能与新能源汽车初创组【第六名】【三等奖】的好成绩&#xff01; 关于德思特&…...

基于机器学习的DDoS检测系统实战

基于机器学习的DDoS检测系统实战&#xff08;PythonScikit-learn&#xff09;&#xff5c;毕业设计必备 摘要&#xff1a;本文手把手教你从0到1实现一个轻量级DDoS攻击检测系统&#xff0c;涵盖数据预处理、特征工程、模型训练与可视化分析。 一、项目背景与意义 DDoS&#x…...

ubuntu安装VMware报错/dev/vmmon加载失败

ubuntu安装VMware报错/dev/vmmon加载失败&#xff0c;解决步骤如下&#xff1a; step1&#xff1a;为vmmon和vmnet组件生成密钥对 openssl req -new -x509 -newkey rsa:2048 -keyout VMW.priv -outform DER -out VMW.der -nodes -days 36500 -subj "/CNVMware/"ste…...

使用条件随机场(CRF)进行文本分类并评估模型性能

目标&#xff1a; 使用条件随机场&#xff08;CRF&#xff09;模型对文本数据进行分类&#xff0c;并评估模型的性能。任务包括读取数据、划分训练集和测试集、训练CR # 1.数据读取与预处理&#xff1a; # o使用open函数读取包含文本和标签的CSV文件。 # o将每一行数据分为文本…...

python的列表、元组、深拷贝、浅拷贝(四)

python的列表 一、序列1. 序列定义2. 序列数据类型包括3.特点&#xff1a;都支持下面的特性 二、 列表1. 列表的创建2. 列表的基本特性(1) 连接操作符喝重复操作符(2) 成员操作符&#xff08;in , not in &#xff09;(3) 索引(4) 切片练习(5) for循环 3. 列表的常用方法(1) 一…...

2.10作业

思维导图 C C语言...

【深度学习】多目标融合算法(四):多门混合专家网络MMOE(Multi-gate Mixture-of-Experts)

目录 一、引言 二、MMoE&#xff08;Multi-gate Mixture-of-Experts&#xff0c;多门混合专家网络&#xff09; 2.1 技术原理 2.2 技术优缺点 2.3 业务代码实践 2.3.1 业务场景与建模 2.3.2 模型代码实现 2.3.3 模型训练与推理测试 2.3.4 打印模型结构 三、总结 一、…...

RuoYi-Vue-Oracle的oracle driver驱动配置问题ojdbc8-12.2.0.1.jar的解决

RuoYi-Vue-Oracle的oracle driver驱动配置问题ojdbc8-12.2.0.1.jar的解决 1、报错情况 下载&#xff1a;https://gitcode.com/yangzongzhuan/RuoYi-Vue-Oracle 用idea打开&#xff0c;启动&#xff1a; 日志有报错&#xff1a; 点右侧m图标&#xff0c;maven有以下报误 &…...

C# OpenCV机器视觉:对位贴合

在热闹非凡的手机维修街上&#xff0c;阿强开了一家小小的手机贴膜店。每天看着顾客们自己贴膜贴得歪歪扭扭&#xff0c;不是膜的边缘贴不整齐&#xff0c;就是里面充满了气泡&#xff0c;阿强心里就想&#xff1a;“要是我能有个自动贴膜的神器&#xff0c;那该多好啊&#xf…...

Baumer工业相机堡盟相机的相机传感器芯片清洁指南

Baumer工业相机堡盟相机的相机传感器芯片清洁指南 Baumer工业相机1.Baumer工业相机传感器芯片清洁工具和清洁剂2.Baumer工业相机传感器芯片清洁步骤2.1、准备步骤2.2、清洁过程1.定位清洁工具2.清洁传感器3&#xff0e;使用吹风装置 Baumer工业相机传感器芯片清洁的优势设计与结…...

SQL 大厂面试题目(由浅入深)

今天给大家带来一份大厂SQL面试覆盖&#xff1a;基础语法 → 复杂查询 → 性能优化 → 架构设计&#xff0c;大家需深入理解执行原理并熟悉实际业务场景的解决方案。 1. 基础查询与过滤 题目&#xff1a;查询 employees 表中所有薪资&#xff08;salary&#xff09;大于 10000…...

在Linux上部署Jenkins的详细指南

引言 在当今快速迭代的软件开发环境中&#xff0c;持续集成和持续交付&#xff08;CI/CD&#xff09;变得越来越重要。Jenkins作为一个开源自动化服务器&#xff0c;能够帮助开发者更高效地进行代码集成、测试和部署。本文将详细介绍如何在Linux系统上安装和配置Jenkins。 准…...

《我在技术交流群算命》(三):QML的Button为什么有个蓝框去不掉啊(QtQuick.Controls由Qt5升级到Qt6的异常)

有群友抛出类似以下代码和运行效果截图&#xff1a; import QtQuick import QtQuick.ControlsWindow {width: 640height: 480visible: truetitle: qsTr("Hello World")Button{anchors.centerIn: parentwidth: 100height: 40background: Rectangle {color: "red…...

Golang:Go 1.23 版本新特性介绍

流行的编程语言Go已经发布了1.23版本&#xff0c;带来了许多改进、优化和新特性。在Go 1.22发布六个月后&#xff0c;这次更新增强了工具链、运行时和库&#xff0c;同时保持了向后兼容性。 Go 1.23 的新增特性主要包括语言特性、工具链改进、标准库更新等方面&#xff0c;以下…...

在 PyTorch 中理解词向量,将单词转换为有用的向量表示

你要是想构建一个大型语言模型&#xff0c;首先得掌握词向量的概念。幸运的是&#xff0c;这个概念很简单&#xff0c;也是本系列文章的一个完美起点。 那么&#xff0c;假设你有一堆单词&#xff0c;它可以只是一个简单的字符串数组。 animals ["cat", "dog…...

deepseek API 调用-python

【1】创建 API keys 【2】安装openai SDK pip3 install openai 【3】代码&#xff1a; https://download.csdn.net/download/notfindjob/90343352...

PHP中的魔术方法

在 PHP 中&#xff0c;以两个下划线 __ 开头的方法被称为魔术方法&#xff0c;它们在特定场景下会自动被调用&#xff0c;以下是一些常见的魔术方法&#xff1a; 1.__construct()&#xff1a;类的构造函数&#xff0c;在对象创建完成后第一个自动调用&#xff0c;用于执行初始…...

Git、Github和Gitee完整讲解:丛基础到进阶功能

第一部分&#xff1a;Git 是什么&#xff1f; 比喻&#xff1a;Git就像是一本“时光机日记本” 每一段代码的改动&#xff0c;Git都会帮你记录下来&#xff0c;像是在写日记。如果出现问题或者想查看之前的版本&#xff0c;Git可以带你“穿越回过去”&#xff0c;找到任意时间…...

相对收益-固定收益组合归因-加权久期归因模型

固定收益组合归因-加权久期归因模型和Campisi模型 1 加权久期归因模型--推导方式11.1 债券策略组合收益率的分解1.1.2 加权久期归因&#xff08;1&#xff09;总久期贡献&#xff08;2&#xff09;债券类属配置贡献 1.1.3 如何应用加权久期归因 2 加权久期归因模型--推导方式22…...

原生鸿蒙版小艺APP接入DeepSeek-R1,为HarmonyOS应用开发注入新活力

原生鸿蒙版小艺APP接入DeepSeek-R1&#xff0c;为HarmonyOS应用开发注入新活力 在科技飞速发展的当下&#xff0c;人工智能与操作系统的融合正深刻改变着我们的数字生活。近日&#xff0c;原生鸿蒙版小艺APP成功接入DeepSeek-R1&#xff0c;这一突破性进展不仅为用户带来了更智…...

RabbitMQ 从入门到精通:从工作模式到集群部署实战(三)

文章目录 使用CLI管理RabbitMQrabbitmqctlrabbitmq-queuesrabbitmq-diagnosticsrabbitmq-pluginsrabbitmq-streamsrabbitmq-upgraderabbitmqadmin 使用CLI管理RabbitMQ RabbitMQ CLI 工具需要安装兼容的 Erlang/OTP版本。 这些工具假定系统区域设置为 UTF-8&#xff08;例如en…...

AI-学习路线图-PyTorch-我是土堆

1 需求 PyTorch深度学习快速入门教程&#xff08;绝对通俗易懂&#xff01;&#xff09;【小土堆】_哔哩哔哩_bilibili PyTorch 深度学习快速入门教程 配套资源 链接 视频教程 https://www.bilibili.com/video/BV1hE411t7RN/ 文字教程 https://blog.csdn.net/xiaotudui…...

2.1 Mockito核心API详解

Mockito核心API详解 1. 创建Mock对象 Mockito提供两种方式创建模拟对象&#xff1a; 1.1 手动创建&#xff08;传统方式&#xff09; // 创建接口/类的Mock对象 UserDao userDao Mockito.mock(UserDao.class);1.2 注解驱动&#xff08;推荐方式&#xff09; 结合JUnit 5的…...

傅里叶单像素成像技术研究进展

摘要&#xff1a;计算光学成像&#xff0c;通过光学系统和信号处理的有机结合与联合优化实现特定成像特性的成像系统&#xff0c;摆脱了传统成像系统的限制&#xff0c;为光学成像技术添加了浓墨重彩的一笔&#xff0c;并逐步向简单化与智能化的方向发展。单像素成像(Single-Pi…...