Day31- 贪心算法part05
一、无重叠区间
题目一:453. 无重叠区间
435. 无重叠区间
给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。
主要思想是优先保留结束时间早的区间,这样留给其他区间的空间就更多,从而减少需要移除的区间数量。具体做法是先根据每个区间的结束时间进行排序,然后遍历这些区间,每次选择结束时间最早且与前一个选中的区间不重叠的区间。
/** @lc app=leetcode.cn id=435 lang=cpp** [435] 无重叠区间*/// @lc code=start
class Solution {
public:int eraseOverlapIntervals(vector<vector<int>>& intervals) {if (intervals.empty()) return 0;sort(intervals.begin(), intervals.end(), [](const vector<int>& a, const vector<int>& b) {return a[1] < b[1];});int count = 0; int end = intervals[0][1]; for (int i = 1; i < intervals.size(); ++i) {if (intervals[i][0] < end) {++count;} else {end = intervals[i][1];}}return count;}
};
// @lc code=end
二、划分字母区间
题目一:763. 划分字母区间
763. 划分字母区间
给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。
注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。
返回一个表示每个字符串片段的长度的列表。
基本思路是首先遍历字符串,记录每个字符最后出现的位置。然后再次遍历字符串,使用一个变量来跟踪当前片段的结束位置。如果在遍历过程中遇到的任何字符的最后出现位置超过了当前片段的结束位置,就更新结束位置。一旦达到或超过当前片段的结束位置,就可以确定一个片段,并开始寻找下一个片段。
/** @lc app=leetcode.cn id=763 lang=cpp** [763] 划分字母区间*/// @lc code=start
class Solution {
public:vector<int> partitionLabels(string s) {vector<int> last(26, 0);int length = s.length();for (int i = 0; i < length; ++i) {last[s[i] - 'a'] = i;}vector<int> partition;int start = 0, end = 0;for (int i = 0; i < length; ++i) {end = max(end, last[s[i] - 'a']);if (i == end) {partition.push_back(end - start + 1);start = end + 1;}}return partition;}
};
// @lc code=end
三、合并区间
题目一:56. 合并区间
56. 合并区间
以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。
基本思路是先根据区间的起始位置进行排序,然后遍历排序后的区间列表,合并所有重叠的区间。
在这个算法中,首先对区间按起始位置进行排序。然后遍历每个区间,如果当前区间的起始位置大于已合并区间集合中最后一个区间的结束位置,则说明当前区间与已合并区间集合中的区间不重叠,可以直接添加到已合并区间集合中。如果有重叠,则将已合并区间集合中最后一个区间的结束位置更新为当前区间的结束位置和已合并区间集合中最后一个区间的结束位置中的较大值。
/** @lc app=leetcode.cn id=56 lang=cpp** [56] 合并区间*/// @lc code=start
class Solution {
public:vector<vector<int>> merge(vector<vector<int>>& intervals) {if (intervals.empty()) return {};sort(intervals.begin(), intervals.end(), [](const vector<int>& a, const vector<int>& b) {return a[0] < b[0];});vector<vector<int>> merged;for (const auto& interval : intervals) {if (merged.empty() || merged.back()[1] < interval[0]) {merged.push_back(interval);} else {merged.back()[1] = max(merged.back()[1], interval[1]);}}return merged;}
};
// @lc code=end
相关文章:
Day31- 贪心算法part05
一、无重叠区间 题目一:453. 无重叠区间 435. 无重叠区间 给定一个区间的集合 intervals ,其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。 主要思想是优先保留结束时间早的区间,这样…...
基于springboot+vue的蜗牛兼职网的设计与实现系统(前后端分离)
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…...
【音视频原理】图像相关概念 ② ( 帧率 | 常见帧率标准 | 码率 | 码率单位 )
文章目录 一、帧率1、帧率简介2、常见帧率标准3、帧率 刷新率 二、码率1、码率简介2、码率单位 一、帧率 1、帧率简介 帧率 Frame Rate , 帧 指的是 是 画面帧 , 帧率 是 画面帧 的 速率 ; 帧率 的 单位是 FPS , Frames Per Second , 是 每秒钟 的 画面帧 个数 ; 帧率 是 动画…...
CSS Position总结:定位属性的实战技巧
CSS Position总结:定位属性的实战技巧 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!在今天的文章中,我们将深入研究CSS中一个至关重要的属…...
python基础系列二-函数
系统函数 函数说明abs返回一个数的绝对值,例如:abs(-1.3)会返回1.3。bin把一个整数转换成以0b开头的二进制字符串,例如:bin(123)会返回0b1111011。chr将Unicode编码转换成对应的字符,例如:chr(8364)会返回…...
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用短曝光功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用短曝光功能(C#) Baumer工业相机Baumer工业相机NEOAPI SDK和短曝光功能的技术背景Baumer工业相机通过NEOAPI SDK使用短曝光功能1.引用合适的类文件2.通过NEOAPI SDK使用短曝光功能3.通过NEOAPI SDK关闭短…...
提升开发效率,Fiddler Everywhere for Mac助您解决网络调试难题
在现代软件开发中,网络调试是一个不可或缺的环节。无论是前端开发还是后端开发,我们经常需要对网络请求进行监控和调试,以便及时发现并解决问题。而Fiddler Everywhere for Mac作为一款强大的网络调试工具,能够帮助开发者提升工作…...
JVM工作原理与实战(十九):运行时数据区-方法区
专栏导航 JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、运行时数据区 二、方法区 1.方法区介绍 2.方法区在Java虚拟机的实现 3.类的元信息 4.运行时常量池 5.字符串常量池 6.静态变量的存储 总结 前言 JVM作为Java程序的运行环境…...
webassembly003 whisper.cpp的项目结构CMakeLists.txt
注:带星号的为非重要部分 基础配置 cmake_minimum_required (VERSION 3.5)project(whisper.cpp VERSION 1.5.0)# Add path to modules list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/") # 在\cmake文件夹下还有BuildTypes.cmake&a…...
克魔助手工具详解、数据包抓取分析、使用教程
目录 摘要 引言 克魔助手界面 克魔助手查看数据捕获列表 数据包解析窗口 数据包数据窗口 克魔助手过滤器表达式的规则 抓包过滤器实例 总结 参考资料 摘要 本文介绍了克魔助手工具的界面和功能,包括数据包的捕获和分析,以及抓包过滤器的使用方…...
【Docker】contos7安装 Nacos容器部署单个部署集群
🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是平顶山大师,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的博客专栏《Docker】contos7安装 Nacos容器部署单个&…...
UML-通信图和交互概览图(通信图和顺序图的区别与联系)
UML-通信图和交互概览图(通信图和顺序图的区别与联系) 一、通信图简介1.消息2.链接 二、通信图和[顺序图](https://blog.csdn.net/weixin_65032328/article/details/135587782)的联系与区别三、交互概览图四、顺序图转化为通信图练习 一、通信图简介 通…...
Linux 使用PS命令掌握进程管理
在Linux系统中,进程管理是系统管理员和开发人员必备的技能之一。而PS命令作为进程管理的重要工具,可以帮助我们查看和监控系统中运行的进程。本文将详细解析PS命令的使用方法和输出结果,帮助读者全面掌握进程管理的利器。 PS命令概述…...
Debian 10.13.0 安装图解
引导和开始安装 这里直接回车确认即可,选择图形化安装方式。 选择语言 这里要区分一下,当前选中的语言作为安装过程中安装器所使用的语言,这里我们选择中文简体。不过细心的同学可能发现,当你选择安装器语言之后,后续安…...
SQLite 3.45.0 发布!
SQLite 开发团队于 2024 年 01 月 18 日发布了 SQLite 3.45.0 版本,带来了一些 JSON 和优化器增强,让我们一睹为快! JSON 函数 SQLite 3.45.0 版本开始,所有的 JSON 函数将会使用全新的内部格式存储 JSON 数据,也就是…...
MongoDB聚合:$set
聚合$set阶段可以为文档添加新的字段。$set输出的文档包含输入文档中的所有现有字段和新添加的字段。$set是$addFields的别名,从MongoDB4.2开始支持。$set和$addFields等价于$project阶段,这两个阶段都等同于 $project 阶段,后者明确指定输入…...
《Python数据分析技术栈》第01章 02 Jupyter入门(Getting started with Jupyter notebooks)
02 Jupyter入门(Getting started with Jupyter notebooks) 《Python数据分析技术栈》第01章 02 Jupyter入门(Getting started with Jupyter notebooks) Before we discuss the essentials of Jupyter notebooks, let us discuss…...
【征服redis5】redis的Redisson客户端
目录 1 Redisson介绍 2. 与其他Java Redis客户端的比较 3.基本的配置与连接池 3.1 依赖和SDK 3.2 配置内容解析 4 实战案例:优雅的让Hash的某个Field过期 5 Redisson的强大功能 1 Redisson介绍 Redisson 最初由 GitHub 用户 “mrniko” 创建,并在…...
React16源码: React中的beginWork的源码实现
beginWork 1 )概述 在 renderRoot 之后,要对我们的 Fiber 树每一个节点进行对应的更新更新节点的一个入口方法,就是 beginWork这个入口方法会有帮助我们去优化整棵树的更新过程 react 它的节点其实是非常多的,如果每一次子节点的…...
5-微信小程序语法参考
1. 数据绑定 官网传送门 WXML 中的动态数据均来自对应 Page 的 data。 数据绑定使用 Mustache 语法(双大括号)将变量包起来 ts Page({data: {info: hello wechart!,msgList: [{ msg: hello }, { msg: wechart }]}, })WXML <view class"vie…...
长期项目中使用Taotoken观测用量与优化API调用策略
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 长期项目中使用Taotoken观测用量与优化API调用策略 在持续数月的开发项目中,团队对大型语言模型的调用往往从简单的功能…...
AWorks硬件抽象层:嵌入式开发中UART、I2C、SPI、ADC接口的统一编程实践
1. 项目概述:当嵌入式开发遇上“万能插座”在嵌入式系统开发中,我们常常面临一个经典难题:硬件平台的碎片化。今天,你可能在为一块基于ARM Cortex-M4的MCU编写SPI驱动,用来连接一块TFT屏幕;明天,…...
Dream框架核心概念解析:Handler、Middleware与Router的完美协作
Dream框架核心概念解析:Handler、Middleware与Router的完美协作 【免费下载链接】dream Tidy, feature-complete Web framework 项目地址: https://gitcode.com/gh_mirrors/dre/dream Dream作为一款功能完备的Web框架,其核心架构围绕Handler、Mid…...
OpCore Simplify:30分钟完成专业Hackintosh配置的智能自动化工具终极指南
OpCore Simplify:30分钟完成专业Hackintosh配置的智能自动化工具终极指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 你是否曾经因为复…...
别再从头训练了!用SAM-Adapter‘轻量化’微调,让你的分割模型快速适配新任务
SAM-Adapter:轻量化微调技术让图像分割模型快速适配新任务 在计算机视觉领域,Segment Anything Model(SAM)的出现无疑掀起了一场分割技术的革命。这个由Meta推出的基础模型,以其惊人的零样本泛化能力震撼了整个行业。然…...
探索现代媒体播放器的终极指南:免费专业播放解决方案
探索现代媒体播放器的终极指南:免费专业播放解决方案 【免费下载链接】mpv.net 🎞 mpv.net is a media player for Windows with a modern GUI. 项目地址: https://gitcode.com/gh_mirrors/mp/mpv.net 还在为Windows平台找不到一款既强大又易用的…...
A型流感病毒广谱中和抗体与广谱通用疫苗研究进展
摘要流感作为全球性的公共卫生问题,对人类健康构成严重威胁。接种流感疫苗是预防和控制流感流行的关键手段,但当前通用流感疫苗的研究尚处于初级阶段。本文聚焦于A型流感病毒,综述了广谱中和抗体的研究进展以及其在广谱通用疫苗研发中的潜在应…...
模板 ID 配置化: “公众号路由 + 模板消息发送” 封装成一个干净的业务 Service
文章目录 引言 I “公众号路由 + 模板消息发送” 多公众号 同模板不同 ID 公众号实例 公众号路由 模板消息发送 Service(业务层 ✅) 异步调用 II 公众号账号配置【升级版】 账号配置 启用配置 模板 ID 解析器 公众号 Router(升级版 ✅) III 路由(Redis 版本) WxRedisOps…...
LeetCode 前K个高频元素题解
LeetCode 前K个高频元素题解 题目描述 给定一个数组,找到前 k 个高频元素。 示例: 输入:nums [1,1,1,2,2,3], k 2输出:[1,2] 解题思路 方法:堆 思路: 使用哈希表统计每个元素出现的次数。使用最小堆维护前…...
【码上爬】 题十一:wasm小试牛刀 wasm文件处理,堆栈分析
暗号:aHR0cHM6Ly9tYXNoYW5ncGEuY29tL3Byb2JsZW0tZGV0YWlsLzExLw题目:先分析数据接口,可以看到m和ts是加密的,但是这里的ts的值应该是一个时间戳,所以主要要逆向的值是m:然后在发起程序的最上面的堆栈下一个…...
