代码随想录算法训练营第三十六天| LeetCode435.无重叠区间、LeetCode763.划分字母区间、LeetCode56.合并区间

LeetCode 435 无重叠区间

题目链接:435. 无重叠区间 - 力扣(LeetCode)

【解题思路】

  • 需要先将数组按照左/右边界排序,这里按照左边界排序来解

  • 如果第i个区间的左边界大于等于i-1区间的右边界

【解题步骤】

  • 1.判断数组大小,如果等于0,则return 0;

  • 2.对数组的左边界进行排序

  • 3.定义一个result,初始化为0,记录重叠区间的数量

  • 3.遍历数组(i从1开始,因为比较的时候是i-1和i进行比较,从0开始会出现负数):

    • 如果当前元素左边界小于上一个气球的右边界:

      • result++

      • 当前元素右边界和上一个元素右边界取最小值更新当前元素的右边界

  • 5.return result

【代码部分】

class Solution {
	public int eraseOverlapIntervals(int[][] intervals) {
		Arrays.sort(intervals, (a,b)-> {
			return Integer.compare(a[0],b[0]);
		});
		int remove = 0;
		for(int i = 1; i < intervals.length; i++) {
			if(intervals[i-1][1] > intervals[i][0]) {
				remove++;
				intervals[i][1] = Math.min(intervals[i-1][1], intervals[i][1]);
			}
		}
		return remove;
	}
}

LeetCode 763 划分字母区间

题目链接:763. 划分字母区间 - 力扣(LeetCode)

【解题思路】

    将当前字母出现的最远位置记录下来,遍历收集到这个字母出现的最远位置,如果在遍历过程中收集到比我们当前“最远出现位置”更远的数组,则对我们收集元素的结束位置进行更新,直到收获。

【解题步骤】

  • 1.定义一个哈希数组,用来记录每个字母最远出现的位置

  • 2.遍历一遍字符串,记录每个字母的最远出现位置

  • 3.定义一个数组,存每个字符串的长度

  • 4.定义left和right分别记录当前区间的左右下标,计算当前区间的长度

  • 5.遍历字符串:

    • 不断更新右边界,取当前右边界与‘当前字母出现的最远位置’之间的最大值

    • 当遍历到最远处(i == right)

      • 将当前区间的长度放入结果集(right-left+1)

      • 更新left到当前位置的后一个位置(left = i +1)

【代码部分】

class Solution {
    public List<Integer> partitionLabels(String s) {
		List<Integer> result = new LinkedList<>();
		char[] chars = s.toCharArray();//将字符串放进数组里,方便遍历
		int [] edge = new int[26];
		for(int i = 0 ; i < chars.length ; i++){
			edge[chars[i] - 'a'] = i;
		}
		int left = 0;
		int right = 0;
		for(int i = 0; i < chars.length ; i++){
			right = Math.max(right,edge[chars[i] - 'a']);
			if(i == right){
				result.add(right - left + 1);
				left = i+1;
			}
		}
		return result;
    }
}

LeetCode 56 合并区间

题目链接:56. 合并区间 - 力扣(LeetCode)

【解题思路】

  • 将数组按照左边界排序,将相邻的区间挨在一起

  • 如果当前区间的左边界小于等于上一个区间的右边界,说明这两个区间一定重叠

    • 将两个区间合并后放入result结果集

  • 如果当前区间的左边界大于上一个区间的右边界,说明这两个区间没有重叠

    • 直接将区间放入result结果集

【解题步骤】

  • 1.定义一个二维数组result用来存放结果集

  • 2.如果区间的大小为0,说明区间是空,直接返回result

  • 3.将区间按照左边界由小到大进行排序

  • 4.将数组的第一个区间直接放入结果集

  • 5.遍历数组:

    • 如果当前遍历的区间的左边界小于等于上一个区间的右边界:

      • 因为我们的第一个区间已经放入结果集里,我们可以直接在结果集里进行修改,取上一个区间的操作就等价于从result结果集里取最后一个元素

      • 更新结果集里区间的右边界,即:取”当前区间的右边界和上一个区间的右边界“里的最大值

    • 如果当前遍历的区间的左边界大于上一个区间的右边界:

      • 将当前遍历的区间直接放入result数组里

  • 6.返回result数组

【代码部分】

class Solution {
    public int[][] merge(int[][] intervals) {
		LinkedList<int[]> result = new LinkedList<>();
		if(intervals.length == 0)return null;
		Arrays.sort(intervals,(a,b)->{
			return Integer.compare(a[0],b[0]);
		});
		result.add(intervals[0]);
		for (int i = 1; i < intervals.length; i++) {
			if(intervals[i][0] <= result.getLast()[1]){
				result.getLast()[1] = Math.max(intervals[i][1],result.getLast()[1]);
			}else{
				result.add(intervals[i]);
			}
		}
		return result.toArray(new int[result.size()][]);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/570619.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++ Qt QMainWindow实现无边框窗口自定义标题栏可拖拽移动拉伸改变窗口大小

本篇博客介绍C Qt QMainWindow实现无边框窗口&#xff0c;适用于win10/win11系统。 QMainWindow相对于QWidget多了dockedwidget功能&#xff0c;跟多人可能更喜欢用QMainWindow做主窗口&#xff0c;如果不需要dockedwidget功能&#xff0c;QMainWindow与QWidget做主窗口基本无…

一款新型的Linux服务器管理工具

最近发现了一款新型的Linux服务器管理工具&#xff0c;名称叫1Panel&#xff0c;本文跟大伙分享一下。 一. 产品介绍 1Panel 是一个开源的 Linux 服务器运维管理面板&#xff0c;具有丰富的功能&#xff0c;可对服务器和容器进行管理。 产品提供简洁直观的We图形界面&#x…

如何使用RRT模式进行交易,昂首资本实例讲解

在上篇文章中&#xff0c;昂首资本用一篇文章讲解了&#xff0c;如何使用RRT模式进行交易以及背后的原理。如果没有看到的各位投资者可以往前翻一下&#xff0c;当然了也有投资者提到了新的问题&#xff0c;那就如何使用&#xff0c;今天昂首资本就用下面有几个例子实例讲解&am…

【C++】---STL之list详解

【C】---STL之list详解 一、了解list的基本信息二、成员函数1、构造2、迭代器3、empty()4、size()5、front()6、back()7、push_front()8、pop_front()9、push_back()10、pop_back()11、insert()12、erase()13、swap()14、sort()15、reverse() 一、了解list的基本信息 1、库里面…

windows查看xxx的版本号

node -v python --version redis-server --version java -version go version mvn -version git --version

【python】随机模拟——赶火车问题、醉汉回家

问题描述 1.赶火车问题。2.模拟二维随机游动&#xff08;醉汉回家&#xff09; 1.赶火车问题。 一列列车从A站开往B站&#xff0c;某人每天赶往B站上车。他已经了解到火车从A站到B站的运行时间是服从均值为30min&#xff0c;标准差为2min的正态随机变量。火车大约下午13&#…

Linux 深入理解Linux文件系统与日志分析

在Linux系统中&#xff0c;文件名和文件数据是分开存储的 文件数据包含 元信息(即不包含文件名的文件属性) 和 实际数据 文件元信息存储在 inode(索引节点)里&#xff0c; 文件实际数据存储在 block(块)里; 文件名存储在目录块里 查看文件的元信息 stat 文件名 [ro…

曲线救国|基于函数计算FC3.0部署AI数字绘画stable-diffusion

曲线救国|基于函数计算FC3.0部署AI数字绘画stable-diffusion 基于函数计算FC2.0部署AI数字绘画stable-diffusion基于函数计算FC3.0部署AI数字绘画stable-diffusion总结 在经过了上一次曲线救国失败经历之后&#xff0c;失败经历参考博文&#xff1a;https://developer.aliyun.c…

C++ —— 继承

什么是继承&#xff1f; 继承是指一种代码可以被复用的机制&#xff0c;在一个类的基础上进行扩展&#xff0c;产生的新类叫做派生类&#xff0c;被继承的类叫基类。&#xff08;也可称为子类和父类&#xff09; 继承的写法&#xff1a; class B : 继承方式 A (…

MCU功耗测量

功耗测量 一、相关概念二、功耗的需求三、测量仪器仪表测量连接SMU功能SMU性能指标 四、功耗测量注意点板子部分存在功耗MCU方面&#xff0c;可能存在干扰项仪器仪表方面 一、相关概念 静态功耗和动态功耗&#xff1a;动态功耗为运行功耗&#xff0c;功耗测量注重每MHz下的功耗…

智能调度|AIRIOT智能车队管理解决方案

客运、货运、汽车租赁、出租运营等行业对车辆管理、车队管理以及司乘人员的管理方式&#xff0c;逐渐向数字化和智能化转型。传统的依赖人工调度、记录和跟踪的管理模式已经难以满足业务发展需要&#xff0c;存在如下痛点&#xff1a; 实时监控与定位功能弱&#xff1a;无法实时…

实验4 数字频率计

实验目的&#xff1a; 1、使用铆孔U7输出一个脉冲&#xff0c;频率不定。 2、使用铆孔V7测量脉冲频率&#xff0c;并在数码管上显示。 实验内容及步骤&#xff1a; 设计原理 测量频率的方法有很多&#xff0c;按照其工作原理分为无源测量法、比较法、示波器法和计数法等。…

restful请求风格的增删改查-----修改and删除

一、修改&#xff08;和添加类似&#xff09; 前端&#xff1a; <script type"text/javascript">function update(){//创建user对象var user {id:$("#id").val(),username:$("#username").val(),password:$("#password").val…

aweraweg

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话&#xff1a; 知不足而奋进&#xff0c;望远山而前行&am…

​「Python绘图」绘制小猪佩奇

python 绘制小猪佩奇 一、预期结果 二、核心代码 import turtle print("开始绘制小猪佩奇") pen turtle.Turtle() pen.pensize(4) #pen.hideturtle()pen.speed(1000)pen.color("#ff9bc0","pink") pen.setheading(-30) pen.pu() pen.goto(-100,…

34. BI - 美国大学生足球队的 GCN 案例

本文为 「茶桁的 AI 秘籍 - BI 篇 第 34 篇」 文章目录 美国大学生足球队 Embedding&#xff08;GCN&#xff09; Hi&#xff0c;你好。我是茶桁。 在上一节课中&#xff0c;因为需要&#xff0c;我们先是回顾了一下 Graph Embedding&#xff0c;然后跟大家讲解了 GCN 以及其算…

代码随想录——双指针/滑动窗口(二)

一.最长连续递增序列 go语言 func max(a,b int) int{if a>b{return a}return b }func findLengthOfLCIS(nums []int) int {n:len(nums)maxlen:0for l:0;l<n;l{r:l1for r<n&&nums[r]>nums[r-1]{r}maxlenmax(r-l,maxlen)}return maxlen }cpp int findLengt…

为什么大模型训练需要GPU,以及适合训练大模型的GPU介绍

文章目录 前言 1、为什么大模型训练需要GPU&#xff0c;而非CPU 2、现在都有哪些合适的GPU适合训练&#xff0c;价格如何 前言 今天偶然看到一篇关于介绍GPU的推文&#xff0c;我们在复现代码以及模型训练过程中&#xff0c;GPU的使用是必不可少的&#xff0c;那么大模型训练需…

软件测试(Web自动化测试)

一.自动化测试简介 1.自动化测试是一种把人工驱动的测试行为转化为机器执行的测试过程。 2.使用自动化测试需要满足的3个条件&#xff1a; &#xff08;1&#xff09;项目需求变动不频繁 &#xff08;2&#xff09;项目进度压力不大&#xff0c;时间不紧迫 &#xff08;3&…

python struct模块 处理字节流

首先看一下&#xff0c;struct 的字节顺序格式。 其次是struct的格式对照表。 下面是案例&#xff1a; 单项数据编解码 >>>struct.pack(i,379978) bJ\xcc\x05\x00 >>>struct.pack(>i,379978) b\x00\x05\xccJ解析&#xff1a; >>>struct.unpa…