贪心算法part5 | ● 435. 无重叠区间 ● 763.划分字母区间 ● 56. 合并区间
文章目录
- 435. 无重叠区间
- 思路
- 思路代码
- 困难
- 763.划分字母区间
- 思路
- 官方题解
- 代码
- 困难
- 56. 合并区间
- 思路
- 思路代码
- 今日收获
435. 无重叠区间
思路
重叠问题都需要先排好序,再贪心
思路代码
func eraseOverlapIntervals(intervals [][]int) int {sort.Slice(intervals,func(i,j int)bool{return intervals[i][1]<intervals[j][1]})count:=1end:=intervals[0][1]for i:=1;i<len(intervals);i++{if end<=intervals[i][0]{end=intervals[i][1]count++}}return len(intervals)-count
}
困难
搞清楚左右区间,重叠的条件。
要找出最少删除的数量,也就是找出重叠空间的数量,然后用长度减去即可。
763.划分字母区间
思路
这里提供一种与452.用最少数量的箭引爆气球 (opens new window)、435.无重叠区间 (opens new window)相同的思路。
统计字符串中所有字符的起始和结束位置,记录这些区间(实际上也就是435.无重叠区间 (opens new window)题目里的输入),将区间按左边界从小到大排序,找到边界将区间划分成组,互不重叠。找到的边界就是答案。
官方题解
一想到分割字符串就想到了回溯,但本题其实不用回溯去暴力搜索。
题目要求同一字母最多出现在一个片段中,那么如何把同一个字母的都圈在同一个区间里呢?
如果没有接触过这种题目的话,还挺有难度的。
在遍历的过程中相当于是要找每一个字母的边界,如果找到之前遍历过的所有字母的最远边界,说明这个边界就是分割点了。此时前面出现过所有字母,最远也就到这个边界了。
可以分为如下两步:
统计每一个字符最后出现的位置
从头遍历字符,并更新字符的最远出现下标,如果找到字符最远出现位置下标和当前下标相等了,则找到了分割点
代码
func partitionLabels(s string) []int {var res []int;var marks [26]int;size, left, right := len(s), 0, 0;for i := 0; i < size; i++ {marks[s[i] - 'a'] = i;}for i := 0; i < size; i++ {right = max(right, marks[s[i] - 'a']);if i == right {res = append(res, right - left + 1);left = i + 1;}}return res;
}func max(a, b int) int {if a < b {a = b;}return a;
}
困难
将字符串转换为每个字符的起始位置,终止位置
56. 合并区间
思路
与前面类似但又不同
思路代码
func merge(intervals [][]int) [][]int {res:=[][]int{}sort.Slice(intervals,func (i,j int)bool{return intervals[i][0]<intervals[j][0]})left,right:=intervals[0][0],intervals[0][1]for i:=1;i<len(intervals);i++{if right<intervals[i][0]{res=append(res,[]int{left,right})left=intervals[i][0]right=intervals[i][1]}else{right=max(right,intervals[i][1])}}res=append(res,[]int{left,right})return res}func max(i,j int)int{if i>j{return i}return j
}
今日收获
重叠问题大致分两类
一类是重叠区间问题(箭射气球)
一类是合并区间问题
做法类似但是处理的逻辑不太相同,左右区间排序的选择也有不同。
相关文章:
贪心算法part5 | ● 435. 无重叠区间 ● 763.划分字母区间 ● 56. 合并区间
文章目录 435. 无重叠区间思路思路代码困难 763.划分字母区间思路官方题解代码困难 56. 合并区间思路思路代码 今日收获 435. 无重叠区间 思路 重叠问题都需要先排好序,再贪心 思路代码 func eraseOverlapIntervals(intervals [][]int) int {sort.Slice(interva…...
IMX6ULL裸机篇之SPI实验-ICM20608代码实现
一. SPI 实验 SPI实验:学习如何使用 I.MX6U 的 SPI 接口来驱动 ICM-20608,读取 ICM-20608 的六轴数据。 本文学习 SPI通信实验中,涉及从设备的 SPI代码编写。 之前学习了 SPI 主控芯片代码的编写,如下所示: IMX6ULL…...
51单片机读取DS18B20温度传感器
1.首先我们知道DS18B20是单总线协议,只有一根数据线。所以Data数据线即使发送端又是接收端,同时DS18B20内部接了弱上拉电阻(如图一所示),数据线默认为高电平。有了这些概念,我们就能进行下一步。 图一&…...
set/map学习
我们要开始学习map和set的使用,虽然使用更加复杂,但是STL整体的设计,本身就具有很强的前瞻性和延续性,比如说迭代器等,我们顺着文档来看。这也是除了vector之外最重要的容器,当然还有unordered_map 和 unor…...
JavaScript Web APIs学习总结
以后声明变量我们有限使用哪一个? const 有了变量先给const,如果发现它后面是要被修改的,再改为let 为什么const声明的对象可以修改里面的属性? 因为对象是引用类型,里面存储的是地址,只要地址不变&…...
萤石摄像头RTSP流获取(黑屏解决)
前言 在获取萤石摄像头RTSP视频流时,视频流获取不成功,黑屏并且一直显示缓冲中。下面对获取过程中查阅的资料和解决方案做一下汇总。 打开RTSP 在萤石云视频APP中打开RTSP,【我的】-【工具】-【局域网设备预览】-【开始扫描】-【选择摄像头…...
ThreadLocal引发的内存泄漏分析
预备知识(引用) Object o new Object(); 这个o,我们可以称之为对象引用,而new Object()我们可以称之为在内存中产生了一个对象实例。 当写下 onull时,只是表示o不再指向堆中object的对象实例,不代表这个…...
银行数据治理:数据质量管理实践
现代商业银行日常经营活动中积累了大量数据,这些数据除了支持银行前台业务流程运转之外,越来越多地被用于决策支持领域,风险控制、产品定价、绩效考核等管理决策过程也都需要大量高质量数据支持。银行日常经营决策过程的背后,实质…...
2.7V至25V宽输入电压15A 峰值电流
HT7179是一款高功率异步升压转换器,集成 20mΩ功率开关管,为便携式系统提供高效的 小尺寸解决方案。 HT7179具有2.7V至25V宽输入电压范围,可为 采用单节或两节锂电池,或12V铅酸电池的应 用提供支持。该器件具备15A开关电流能力&a…...
Vue 父子组件应用指南:从基础到实战
文章目录 一、创建父组件二、创建子组件三、在父组件中使用子组件四、父子组件之间的通信1. 数据传递2. 事件传递 Vue.js 是一种流行的 JavaScript 框架,用于构建用户界面。其中,父子组件的概念是 Vue 开发中非常重要的一部分。本文将介绍如何使用 Vue 创…...
todotodo
todotodo...
创建autotool项目
GNU Autotools是linux系统一套自动化编译工具,生成的项目可移植,通过configure && make即可生成目标程序。GNU Autotools组件有:autoscan, aclocal, autoconf, automake,autoheader等。 不用管这些工具的原理,只要知道他们…...
计算机概念
计算机的体系结构 计算机俗称“电脑”computer(kəmˈpjuːtə(r))哈哈,本质上就是一台在各个领域被广泛使用的设备,主要由硬件和软件两大部分组成。 常见的硬件:CPU、内存、硬盘、显卡、主板、键盘、显示器、鼠标、... CPU - 中央处理…...
【数学建模系列】TOPSIS法的算法步骤及实战应用——MATLAB实现
文章目录 TOPSIS简介方法和原理数学定义数学语言描述现实案例 正负理想解定义实例 量纲 TOPSIS法的算法步骤1.用向量规范化的方法求得规范决策矩阵2.构成加权规范阵C(c~ij~)~m*n~3.确定正负理想解的距离4.计算各方案到正理想解与负理想解的距离5.计算各方案的综合评价指数6.排列…...
网络安全(黑客)工具
1.Nmap 它是网络管理员 必用的软件之一,以及用以评估网络系统安全。正如大多数被用于网络安全的工具,nmap 也是不少黑客及骇客(又称脚本小子 )爱用的工具 。系统管理员可以利用nmap来探测工作环境中未经批准使用的服务器ÿ…...
探究前后端数据交互方式
前端和后端在 Web 开发中扮演着不同的角色,两者需要进行数据的传递和交互。本篇文章将主要讨论前后端数据交互方式的不同类型和应用场景。 一、什么是前后端数据交互? 在 Web 开发中,前端负责用户界面的设计和交互,后端负责数据…...
Yolov5轻量化:CVPR2023|RIFormer:无需TokenMixer也能达成SOTA性能的极简ViT架构
1.RIFormer介绍 论文:https://arxiv.org/pdf/2304.05659.pdf 本文基于重参数机制提出了RepIdentityFormer方案以研究无Token Mixer的架构体系。紧接着,作者改进了学习架构以打破无Token Mixer架构的局限性并总结了优化策略。搭配上所提优化策略后,本文构建了一种极致简单且…...
Spring-Retry实现及原理
前言 重试,其实我们其实很多时候都需要的,为了保证容错性,可用性,一致性等。一般用来应对外部系统的一些不可预料的返回、异常等,特别是网络延迟,中断等情况。还有在现在流行的微服务治理框架中࿰…...
Java中的锁
为什么会有这些锁呢? 因为一种类型的锁很难应对线程操作同步资源的情况。 乐观锁和悲观锁 自旋锁和适应性自旋锁 无锁、偏向锁、轻量级锁和重量级锁 公平锁和非公平锁 可重入锁和非可重入锁 乐观锁和悲观锁 悲观锁认为当它操作数据的时候,必然用一…...
学习系列:5种常见的单例模式变体及其实现方式
单例模式是一种创建型设计模式,它保证一个类只有一个实例,并提供了一个全局访问点。在实际应用中,我们可能会遇到一些特殊情况,需要对单例模式进行一些变体,以满足不同的需求。下面介绍几种常见的单例模式变体。 1. 懒…...
2026年高性价比个人网盘盘点:告别“空间焦虑”,谁才是真正的效率神器?
在预算有限的情况下寻找个人网盘,大多数人的第一反应是打开计算器,算出“每 GB 只要几分钱”。但作为一个在存储行业摸爬滚打多年的老兵,我要告诉你一个反直觉的事实:对于 90% 的办公族和学生来说,网盘的“空间大小”是…...
3个步骤在Docker容器中运行本地Windows ISO镜像:从配置到优化
3个步骤在Docker容器中运行本地Windows ISO镜像:从配置到优化 【免费下载链接】windows Windows inside a Docker container. 项目地址: https://gitcode.com/GitHub_Trending/wi/windows 问题导入:为什么需要本地ISO镜像? 在使用Doc…...
FireRedASR-AED-L从零部署:无需Python环境,Docker镜像开箱即用指南
FireRedASR-AED-L从零部署:无需Python环境,Docker镜像开箱即用指南 你是否遇到过这样的情况?想用最新的语音识别模型,却被复杂的Python环境、版本冲突和依赖安装搞得焦头烂额。或者好不容易装好了环境,又因为音频格式…...
终极指南:如何在ComfyUI中掌握IPAdapter Plus图像风格迁移技术
终极指南:如何在ComfyUI中掌握IPAdapter Plus图像风格迁移技术 【免费下载链接】ComfyUI_IPAdapter_plus 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI_IPAdapter_plus 在AI图像生成领域,ComfyUI IPAdapter Plus插件正在成为图像风格迁…...
UNet全维度改进模型库重磅发布
突破边界,赋能工业质检:UNet全维度改进模型库重磅发布 在工业缺陷检测领域,分割精度与效率的平衡始终是技术落地的核心命题。我们倾力打造**「UNet全维度改进模型库」,以37项原创性结构创新为引擎,深度融合注意力机制…...
开发者专属配置:OpenClaw+GLM-4-7-Flash优化命令行工作效率
开发者专属配置:OpenClawGLM-4-7-Flash优化命令行工作效率 1. 为什么开发者需要AI增强命令行? 作为每天与终端打交道的开发者,我经常遇到这样的困境:忘记复杂的grep参数组合、需要反复查阅历史命令、或是面对一长串docker compo…...
虚拟控制器与设备模拟从入门到精通:ViGEmBus驱动技术指南
虚拟控制器与设备模拟从入门到精通:ViGEmBus驱动技术指南 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 在游戏开发与输入设备模拟领域…...
GIS工作者必看:如何用SimpleGIS插件解决遥感影像配准难题(含Bing/天地图无偏移地图技巧)
GIS工程师实战指南:SimpleGIS插件在遥感影像配准中的高阶应用 遥感影像配准是GIS工作中的基础操作,却也是最容易出错的环节之一。作为一名长期与影像数据打交道的GIS工程师,我深知配准偏差带来的困扰——从项目返工到数据可信度质疑ÿ…...
Qwen3-0.6B-FP8效果展示:用‘把这篇技术博客改写成适合小学生理解的版本’实测简化能力
Qwen3-0.6B-FP8效果展示:用‘把这篇技术博客改写成适合小学生理解的版本’实测简化能力 1. 引言:当大模型遇上“小学生”挑战 想象一下,你面前有一篇满是专业术语、复杂逻辑的技术文章,现在需要把它讲给一个小学三年级的孩子听&…...
【Python工业视觉部署黄金法则】:20年实战总结的5大避坑指南与实时推理加速秘籍
第一章:Python工业视觉部署的工程化本质与挑战全景工业视觉系统在产线落地时,远非“模型训练完成 → 用OpenCV加载推理”这般线性。其核心矛盾在于:算法原型追求精度与泛化,而工程部署必须兼顾实时性、鲁棒性、可维护性与硬件约束…...
