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…...
从 Agent 到 Skill:揭秘 AI 产品经理进阶的真正关键!
文章深入探讨了 AI 产品经理应如何理解和应用 Agent 与 Skill。文章指出,当前许多 AI 产品经理将注意力过度集中于 Agent,而忽略了 Skill 的重要性。实际上,Skill 是定义 Agent 在具体任务中行为、标准和质量的关键。文章详细阐述了 Skill 的…...
如何通过GDScript游戏开发入门成为独立游戏开发者
如何通过GDScript游戏开发入门成为独立游戏开发者 【免费下载链接】learn-gdscript Learn Godots GDScript programming language from zero, right in your browser, for free. 项目地址: https://gitcode.com/gh_mirrors/le/learn-gdscript 对于许多游戏爱好者来说&am…...
终极指南:Linkerd与Rancher集成的完整实践方案
终极指南:Linkerd与Rancher集成的完整实践方案 【免费下载链接】linkerd Old repo for Linkerd 1.x. See the linkerd2 repo for Linkerd 2.x. 项目地址: https://gitcode.com/gh_mirrors/li/linkerd Linkerd作为一款强大的服务网格工具,与Ranche…...
终极性能调优指南:如何配置dnstwist实现超高速域名扫描
终极性能调优指南:如何配置dnstwist实现超高速域名扫描 【免费下载链接】dnstwist Domain name permutation engine for detecting homograph phishing attacks, typo squatting, and brand impersonation 项目地址: https://gitcode.com/gh_mirrors/dn/dnstwist …...
pg_activity快速入门:如何在5分钟内开始监控PostgreSQL服务器
pg_activity快速入门:如何在5分钟内开始监控PostgreSQL服务器 【免费下载链接】pg_activity pg_activity is a top like application for PostgreSQL server activity monitoring. 项目地址: https://gitcode.com/gh_mirrors/pg/pg_activity PostgreSQL数据库…...
“男子靠AI开一人公司年营收达150万”冲上热搜;Claude Code开发团队回应源码泄露:纯属人为失误;树莓派因LPDDR4内存涨价7倍 | 极客头条
「极客头条」—— 技术人员的新闻圈!CSDN 的读者朋友们好,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。(投稿或寻求报道:zhanghycsdn.net)整理 | 郑丽媛出品 | CSDN(I…...
kprobe函数入口时的汇编跳板执行流程与栈帧机制
kprobe函数入口汇编跳板执行流程与栈帧机制 文章目录kprobe函数入口汇编跳板执行流程与栈帧机制前言环境准备ftrace跳板创建跳板执行流程与栈帧逐行拆解初始状态与安全校验双层栈帧构建(CONFIG_FRAME_POINTER)通用寄存器保存与C函数参数准备剩余寄存器保…...
Agno 多 Agent 实战(二):搭建完整内容创作流水线
前情回顾 上一篇我们用路由模式做了一个智能问答系统,路由模式适合单步任务,一次分配。今天分享的是更复杂的场景:多步骤协作。 很多任务不是一步能做完的,比如写一篇文章:得先找资料,再写初稿,再审核修改,最后排版。这就需要多个 Agent 一步步协作,我们可以用协调模…...
SimWorks FDTD仿真结果可视化:从监视器数据到专业图表,手把手教你避开插值陷阱
SimWorks FDTD仿真结果可视化:从监视器数据到专业图表,手把手教你避开插值陷阱 电磁仿真工程师们常遇到这样的困境:明明仿真设置无误,计算结果却与预期存在微妙差异。问题的根源往往不在仿真过程本身,而在于后处理阶段…...
基于粒子群算法(PSO)的宽带消色差超透镜Matlab核心程序探秘
基于粒子群算法PSO宽带消色差超透镜matlab核心程序有注释便于理解代码的含义,包含FDTD仿真,文章复现案例讲解,适合学习几何相位和传输相位,消色差效果很好可以对代码进行优化在光学领域,宽带消色差超透镜是一个热门的研…...
