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

day29--452. 用最少数量的箭引爆气球+435. 无重叠区间+763.划分字母区间

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

题目链接:https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-balloons/
文章讲解:https://programmercarl.com/0452.%E7%94%A8%E6%9C%80%E5%B0%91%E6%95%B0%E9%87%8F%E7%9A%84%E7%AE%AD%E5%BC%95%E7%88%86%E6%B0%94%E7%90%83.html
视频讲解:https://www.bilibili.com/video/BV1SA41167xe

1.1 初见思路

  1. 投影到x轴上,其实就类似看重叠区间如何满足条件
  2. 按x_start从小到大排序,然后从头开始遍历,每个气球最多可以跟几个重合,重合的就算引爆一次
  3. 然后引爆过的就都不算了,从引爆过之后的继续遍历

1.2 具体实现

class Solution {public int findMinArrowShots(int[][] points) {Arrays.sort(points, (a, b) -> Integer.compare(a[0], b[0]));int count = 0;//记录准备射的箭的范围int x_start=points[0][0];int x_end = points[0][1];for(int[] x :points){//当前气球范围左边界 <= 射箭范围的右边界,说明可准备缩小射箭左范围(但是遍历的过程就是缩小射箭缩范围)if(x[0]<=x_end){//当前气球范围右边界 >= 射箭范围的右边界,说明范围已覆盖if(x[1]>=x_end){continue;}//当前气球范围右边界 < 射箭范围的右边界,说明可缩小射箭右范围else{x_end = x[1];}}当前气球范围左边界 > 射箭范围的右边界,说明得换新的箭了,更新射箭范围else{count++;x_start = x[0];x_end = x[1];}}return count+1;}
}

1.3 重难点

二、 435. 无重叠区间

题目链接:https://leetcode.cn/problems/non-overlapping-intervals/
文章讲解:https://programmercarl.com/0435.%E6%97%A0%E9%87%8D%E5%8F%A0%E5%8C%BA%E9%97%B4.html
视频讲解:https://www.bilibili.com/video/BV1A14y1c7E1

2.1 初见思路

  1. 如何模拟出需要考虑的情况
  2. 肯定跟上一题一样需要进行排序,这题先考虑按右边界进行排序
  3. 判断两个是否重叠好说,假设两个重叠了,怎么判断他们是否跟第三个重叠?
    取 区间1 和 区间2 右边界的最小值,因为这个最小值之前的部分一定是 区间1 和区间2 的重合部分,如果这个最小值也触达到区间3,那么说明 区间 1,2,3都是重合的

2.2 具体实现

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

2.3 重难点

  • 怎么模拟特殊的场景

三、 763.划分字母区间

题目链接:https://leetcode.cn/problems/partition-labels/
文章讲解:https://programmercarl.com/0763.%E5%88%92%E5%88%86%E5%AD%97%E6%AF%8D%E5%8C%BA%E9%97%B4.html
视频讲解:https://www.bilibili.com/video/BV18G4y1K7d5

3.1 初见思路

  1. 找到每个字母的最远的下标
  2. 从第一个字母开始,这个字母从下表0 到 最远的这个为一段,这一段中出现的字母,遍历一遍看他们最远的下标在哪里,这才是真正的一段。
  3. 从上面真正的一段之后开始找第二段

3.2 具体实现

class Solution {public List<Integer> partitionLabels(String s) {List<Integer> list = new LinkedList<>();int[] edge = new int[26];char[] chars = s.toCharArray();for (int i = 0; i < chars.length; i++) {edge[chars[i] - 'a'] = i;}int idx = 0;//为什么要设置为-1,为了就是在计算第一个的长度时是正确的int lastIndex = -1;for (int i = 0; i < chars.length; i++) {idx = Math.max(idx, edge[chars[i] - 'a']);if (i == idx) {list.add(i - lastIndex);lastIndex = i;}}return list;}
}

3.3 重难点

  • 思路比较难想

在这里插入图片描述

相关文章:

  • RABBITMQ的本地测试证书生成脚本
  • Windows右键没有新建Word、PPT与Excel的解决方法
  • vue + echart 饼形图
  • 每日刷题(二分图,二分查找,dfs搜索)
  • x.permute(0, 3, 1, 2).contiguous() 和 x.permute(0, 3, 1, 2)
  • C语言笔记29 •单链表经典算法OJ题-1.合并两个升序链表•
  • 在 PostgreSQL 里如何处理数据的归档和清理策略的优化?
  • Sentieon应用教程:本地使用-Quick_start
  • 笔记第二弹
  • 【BUG】已解决:JsonMappingException
  • 从零开始学习嵌入式---- C高级编译工具
  • FastAPI 学习之路(三十四)数据库多表操作
  • 基于术语词典干预的机器翻译挑战赛笔记Task1 跑通baseline
  • mybatis基础语法
  • springmvc-03
  • C# 免费离线人脸识别 2.0 Demo
  • Debian下无root权限使用Python访问Oracle
  • Fastjson的基本使用方法大全
  • k8s如何管理Pod
  • MySQL-事务管理(基础)
  • node 版本过低
  • WePY 在小程序性能调优上做出的探究
  • 给Prometheus造假数据的方法
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 蓝海存储开关机注意事项总结
  • 数据科学 第 3 章 11 字符串处理
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 因为阿里,他们成了“杭漂”
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • #13 yum、编译安装与sed命令的使用
  • #Z2294. 打印树的直径
  • #知识分享#笔记#学习方法
  • $$$$GB2312-80区位编码表$$$$
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (二)斐波那契Fabonacci函数
  • (分布式缓存)Redis哨兵
  • (每日一问)操作系统:常见的 Linux 指令详解
  • (三)Kafka 监控之 Streams 监控(Streams Monitoring)和其他
  • (十六)一篇文章学会Java的常用API
  • (原创)可支持最大高度的NestedScrollView
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • ***原理与防范
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .NET 命令行参数包含应用程序路径吗?
  • .Net转前端开发-启航篇,如何定制博客园主题
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @Autowired和@Resource的区别
  • @EnableWebSecurity 注解的用途及适用场景
  • @Mapper作用
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(朱雀组)
  • [5] CUDA线程调用与存储器架构