news 2026/4/30 6:14:21

【LeetCode: 划分字母区间】贪心算法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【LeetCode: 划分字母区间】贪心算法

目 录

一、题目描述

二、题目解答

2.1 思路

2.2 代码

三、总结


一、题目描述

给你一个字符串s。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。例如,字符串"ababcc"能够被分为["abab", "cc"],但类似["aba", "bcc"]["ab", "ab", "cc"]的划分是非法的。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是s。返回一个表示每个字符串片段的长度的列表。

示例 1:输入:s = "ababcbacadefegdehijhklij"
输出:[9,7,8]
解释:划分结果为 "ababcbaca"、"defegde"、"hijhklij" 。每个字母最多出现在一个片段中。像 "ababcbacadefegde", "hijhklij" 这样的划分是错误的,因为划分的片段数较少。

二、题目解答

2.1 思路

这道题的核心就在于同一个字母不能出现在两个片段中,而且切片的顺序不能乱,不能东切一片西切一片滴。所以我们可以计算出每个字母最后出现的顺序然后去切片。

思路:1. 定义一个长26的数组,遍历字符串,把字符串中的字母最后出现的位置记录下来

2. 定义起始量和结尾量还有最重要返回的列表

3. 遍历字符串,对当前字符更新 end = max(end,count[c])

若 i = end,就说明已经到达最大位置了,得分片了。这里要做两件事情:计算出当前切片长度并更新起始点位置

4. 返回结果

2.2 代码

class Solution { public List<Integer> partitionLabels(String s) { int[] count = new int[26]; for(int i = 0; i < s.length(); i++){ char c = s.charAt(i); count[c - 'a'] = i; } List<Integer> result = new ArrayList<>(); int start = 0; int end = 0; for(int i = 0; i < s.length(); i++){ char c = s.charAt(i); end = Math.max(end,count[c - 'a']); if(i == end){ int length = end - start + 1; result.add(length); start = end + 1; } } return result; } }

三、总结

这道题核心在于要记录每个字母的最后出现位置;在遍历字符串时,需要维护当前片段的“最远结束位置”;当遍历到当前片段的末尾时,就切一段。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 6:11:34

为什么要做大模型粘性调度?

大模型推理的成本核心在于Prefill——就像每次做饭都得从头切菜备料。而KV Cache就是那些可以复用的“半成品”。传统负载均衡像随机分配顾客去不同窗口&#xff0c;每位顾客都得重新“自我介绍”&#xff0c;造成了巨大的算力浪费。 粘性调度的本质&#xff0c;不是死板地固定…

作者头像 李华
网站建设 2026/4/30 6:10:23

南方科技大学与微软联合研究:给大语言模型的“犯错瞬间“做X光

这项由南方科技大学与微软联合开展的研究&#xff0c;以预印本形式于2026年4月发布&#xff0c;论文编号为arXiv:2604.17761&#xff0c;感兴趣的读者可通过该编号查询完整原文。研究团队来自南方科技大学计算机系以及微软研究院&#xff0c;两个团队的合作结合了学术界对可解释…

作者头像 李华
网站建设 2026/4/30 6:06:43

Power Query的正确打开方式

先说结论Power Query是Excel里藏得最深的大杀器&#xff0c;它能让你的数据清洗工作从「每天手动搬砖一小时」变成「点一下刷新全自动搞定」。如果你每天都在重复同样的数据整理操作&#xff0c;Power Query就是为你量身定做的。这个东西是什么你每个月是不是都在干这种事——从…

作者头像 李华
网站建设 2026/4/30 6:06:42

Excel高效使用技巧(四):数据可视化进阶:动态图表与专业报表设计

数据本身不会说话,但好的图表能让它开口讲故事。 做了这么多年数据分析,我发现一个真理:同样的数据,不同的呈现方式,价值天差地别。 把一堆数字堆在表格里,老板看了直摇头;做成专业的可视化报表,老板看了直点头。这就是数据可视化的魔力。 今天这篇,咱们聊聊如何用E…

作者头像 李华
网站建设 2026/4/30 5:59:41

基于MedicalGPT开源项目,从零构建专业医疗大语言模型的完整指南

1. 项目概述&#xff1a;从零到一&#xff0c;打造你的专属医疗大语言模型如果你是一名对AI和医疗交叉领域感兴趣的开发者&#xff0c;或者是一家医疗科技公司的技术负责人&#xff0c;最近肯定被各种大语言模型&#xff08;LLM&#xff09;刷屏了。ChatGPT、Claude、Gemini这些…

作者头像 李华