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

【力扣 Hot100】每日一题

D15

鲁迅曾说,尽量每天都让自己充实一点,你可以刷一个小时的短视频,打一个小时的王者荣耀,但尽量再留一个小时出来读一下书、教程、博客,让自己的大脑保持活跃,而不是垃圾场。如果真的没有事情做,刷 LeetCode 确实是一个不错的选择。好,今天继续坚持来一道 LeetCode 题解,第18 题——划分字母区间

划分字母区间

763. 划分字母区间 - 力扣(LeetCode)

有了前两道跳跃游戏的练习(见上次题解博客),再看到这种贪心的题目,我们即使不能一下子全想出来解法,也有点思路了。这道题目我第一眼,直觉告诉我要找某个字母最后出现的位置,但也仅仅到这了。。。去看了题解。

这道题目贪心的核心:

  • 记录所有字母最大索引位置
  • 当前第i个字母的最大索引位置作为区间最右端
  • 如果当前位置就处在当前序列某字母的最大索引,则将这一序列归为一个片段

我们来详细解释一下为什么是这样。

比如我有一序列ababcc,从索引0开始遍历字符串,首先获得a的最大索引是2,那么记录end = 2,索引为1时,b的最大索引是3,更新end = 3,直到索引为3时,end也是3,所以就代表当前字母仅在这一序列中,将end作为区间右端点,这就是第一段区间。

可能有人问,为什么通过最大索引就能把字母们分好类呢?

首先,题目要求是同一字母只能出现在一个序列中,这个例子中因为a最大索引是2,所以在2之前所有的字母都与a强行绑定了,也就是说,他们必须在一个序列中,所以当我们每次都获取当前字母的最远位置,不断更新区间的右端点,凡是包括在内部的字母都在一个序列中,直到当前位置到了记录的最大索引。此时,不再有新的字母加入,并且也到了内部字母能到的最远位置。

class Solution {public List<Integer> partitionLabels(String s) {List<Integer> ans = new ArrayList();int[] far = new int[26]; //记录某个字母存在的最远距离char[] ss = s.toCharArray();for (int i = 0; i < ss.length; i++) {far[ss[i] - 'a'] = i;}int end = 0;int start = 0;for(int i = 0; i < ss.length; i++){end = Math.max(end, far[ss[i] - 'a']); //当前字母存在的最远位置if(end == i){ans.add(end - start + 1);start = i + 1;}}return ans;}
}

如果这篇文章对你有帮助,请点赞、评论、收藏,创作不易,你的支持是我创作的动力。
http://www.dtcms.com/a/346825.html

相关文章:

  • C++之list类的代码及其逻辑详解 (中)
  • Java线程的几种状态 以及synchronized和Lock造成的线程状态差异,一篇让你搞明白
  • Linux服务器Systemctl命令详细使用指南
  • GitLab CI:安全扫描双雄 SAST vs. Dependency Scanning 该如何抉择?
  • 智慧园区人车混行误检率↓78%!陌讯动态决策算法实战解析
  • html链接的target属性
  • Win11 下卸载 Oracle11g
  • 《文字的本体论突围:从工具论到符号学革命的范式转换》
  • B.30.01.1-Java并发编程及电商场景应用
  • 算法 ---哈希表
  • 从0到1:数据库进阶之路,解锁SQL与架构的奥秘
  • 日语学习-日语知识点小记-进阶-JLPT-N1阶段蓝宝书,共120语法(6):51-60语法
  • 为什么存入数据库的中文会变成乱码
  • 从罗永浩访谈李想中学习现代家庭教育智慧
  • C++编程语言:标准库:第36章——字符串类(Bjarne Stroustrup)
  • 【秋招笔试】2025.08.23美团研发岗秋招笔试题
  • 超越基础:Glide 高级优化与自定义实战
  • 氟锑酸与氢氧化铯的反应:从化学原理到计算模拟
  • Science Robotics 通过人机交互强化学习进行精确而灵巧的机器人操作
  • 文生3D实战:用[灵龙AI API]玩转AI 3D模型 – 第7篇
  • 【C标准库】详解<stdio.h>标准输入输出库
  • 数字化转型模型工作手册
  • 一种解决使用 PotPlayer 播放 Alist 的 Webdav 时提示 无法在 FTP/WebDAV/HTTP 上修改该文件夹 的方法
  • 深入理解纹理与QtOpenGL的实现
  • 随着威胁的加剧,地方政府难以保卫关键基础设施
  • 【小沐学GIS】基于C++绘制三维数字地球Earth(osgEarth、三维瓦片地球)第十期
  • 2025年AI Agent规模化落地:企业级市场年增超60%,重构商业作业流程新路径
  • 基于Labview的旋转机械AI智能诊断系统
  • docker:compose
  • 科技赋能,宁夏农业绘就塞上新“丰”景