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.pswp.cn/pingmian/94131.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/94131.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/94131.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sql server的行转列

业务场景&#xff1a;有如下一张表&#xff0c;希望汇总成下面的查询结果。 原始数据表 EmployeeTable&#xff1a;一个员工身兼多个岗位。 Employee Role Level 张三 工程师 3 张三 经理 5 李四 工程师 2 李四 主管…

某市-2025【网安·论道】决赛-misc1-翻转-wp

题目给了个图片以及一句提示 “斯蒂xx会帮助你” 直接就能想到 ste 开头的那几个工具&#xff0c;但是我比赛时候电脑什么ste开头的工具都没装&#xff0c;只能回来做了。 └─$ exiftool x.jpeg ExifTool Version Number : 13.00 File Name : …

[系统架构设计师]大数据架构设计理论与实践(十九)

[系统架构设计师]大数据架构设计理论与实践&#xff08;十九&#xff09; 一.传统数据处理系统的问题 1.传统数据库的数据过载问题 传统应用的数据系统架构设计时&#xff0c;应用直接访问数据库系统。当用户访问量增加时&#xff0c;数据库无 法支撑日益增长的用户请求的负载&…

UniAD

1. 算法动机及开创性思路 1&#xff09;UniAD算法简介 算法全称&#xff1a;Planning-oriented Autonomous Driving核心特点&#xff1a; 统一框架整合感知、预测、规划模块CVPR 2023最佳论文采用查询(query)方式连接各模块 名称含义&#xff1a; Unified&#xff1a;统一多模块…

ESP-NOW详解(esp-idf)

esp-now目前主要支持单播和广播&#xff0c;广播地址为ff:ff:ff:ff:ff:ff,广播可以向范围内所有拥有esp-now接收的设备发送数据 注意事项&#xff0c;网络模式是可以设置网络mac地址的&#xff0c;在单播中&#xff0c;目标设备网络模式选择为ap时&#xff0c;mac地址会发生改…

`strlen` 字符串长度函数

1) 函数的概念与用途 strlen 是 C 语言标准库中最基础且使用最频繁的字符串处理函数之一&#xff0c;它的名字来源于"string length"&#xff08;字符串长度&#xff09;。这个函数的功能非常明确&#xff1a;计算一个以空字符结尾的字符串的长度。 可以将 strlen 想…

TorchInductor - Introduction

PyTorch 2.x通过TorchDynamo通过Python Bytecode的动态变换实现了图捕获功能&#xff0c;需要搭配一个Compiler Backend完成图编译。 Pytorch尝试集成了多个后端&#xff0c;并使用一个轻量级的autotuner来选择最优的后端图编译结果。这个解决方案存在2个问题&#xff1a; 这…

Adobe Illustrator默认键盘快捷键

目录 默认键盘快捷键 常用的快捷键 处理文档 选择工具 查看图稿 处理所选对象 绘制 编辑形状 处理实时上色组 处理对象 创建可变宽度点 处理文字 使用面板 动作面板 “画笔”面板 “字符”和“段落”面板 “颜色”面板 “渐变”面板 “图层”面板 “色板”…

「数据获取」《中国能源统计年鉴》(1986-2023)(获取方式看绑定的资源)

01、数据简介一、年鉴基本定位与发展历程《中国能源统计年鉴》作为一部权威性极强的能源领域资料典籍&#xff0c;始终以全面、精准反映中国能源建设推进、生产运行、消费态势以及供需平衡状况为核心使命。其编纂工作发轫于 1986 年&#xff0c;最初由国家统计局工业交通统计司…

SpringBoot3系列---【SpringBoot3集成sqlite】

SpringBoot3集成sqlite 1.引入pom.xml <dependencies><dependency><groupId>org.xerial</groupId><artifactId>sqlite-jdbc</artifactId><version>3.34.0</version></dependency><dependency><groupId>com.…

头部 TTS 开源项目深度对比

语音合成&#xff08;TTS&#xff09;开源项目是技术研究与产业落地的核心支撑&#xff0c;不同项目因技术路线、设计目标差异&#xff0c;在语言覆盖、合成自然度、可扩展性等方面表现悬殊。本文选取当前开源生态中应用最广、影响力最大的五大 TTS 项目——MaryTTS、Coqui TTS…

可视化-模块1-HTML-02

1-新建一个HTML文档&#xff0c;命名为&#xff1a;week1-12-<h1>标签<body><h1>这是标题 1</h1> <h2>这是标题 2</h2> <h3>这是标题 3</h3> <h4>这是标题 4</h4> <h5>这是标题 5</h5> <h6>这是…

搜索算法在实际场景中的应用

1. 数据库系统 B+树索引 应用场景:关系型数据库(MySQL、PostgreSQL等)的索引实现 算法特点: 平衡多路搜索树,优化磁盘I/O 支持范围查询和排序操作 典型实现: CREATE INDEX idx_name ON users(last_name); 哈希索引 应用场景:键值存储(Redis、Memcached)、等值查询 算…

基础IO

目录 一、进程和文件的关系 二、背景补充 三、打开文件接口 (1) FILE *fopen(const char* filename , const char *mode) &#xff08;2&#xff09;open 系统调用 文件描述符 open和fopen的关系 &#xff08;3&#xff09;size_t fwrite&#xff08;const void * ptr, …

SpringBoot快速上手

SpringBoot快速上手 环境准备 IDEA版本: 社区版:2021.1-2022.1.4 专业版:无要求 Maven 官方对于Maven的描述: Maven是一个项目管理工具,基于POM(Project Object Model,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告文档和项目管理工具软件. 人…

GitHub Actions workflow最佳实践

使用 GitHub Actions Workflow 时&#xff0c;遵循最佳实践可以显著提升自动化效率、安全性和可维护性。以下是经过实践验证的核心最佳实践&#xff0c;涵盖配置设计、性能优化、安全防护等维度&#xff0c;并附具体示例&#xff1a; 一、工作流组织与触发优化 1. 拆分工作流&a…

JAVA读取项目内的文件或图片

一、读取resources下的文件或图片&#xff1b;文件或图片位置&#xff1a;代码&#xff1a;InputStream fis Thread.currentThread().getContextClassLoader().getResourceAsStream("template/" xxx.jpg);二、读取项目内任意位置的文件或图片。文件或图片位置&…

Python如何将两个列表转化为一个字典

一、使用zip函数 zip函数是Python内置的一个强大工具&#xff0c;它可以将多个迭代器&#xff08;如列表、元组等&#xff09;“压缩”成一个迭代器&#xff0c;其中每个元素都是一个元组。使用zip函数将两个列表转换为字典是最常见的方法。 1、基本用法 keys [a, b, c] value…

Vue 3 useModel vs defineModel:选择正确的双向绑定方案

&#x1f4d6; 概述 useModel() 是 Vue 3.4 版本中引入的一个组合式 API 辅助函数&#xff0c;它是驱动 defineModel() 的底层实现。这个函数主要用于在非单文件组件中实现双向数据绑定&#xff0c;特别是在使用原始的 setup() 函数时。 ⚠️ 重要提示&#xff1a;如果使用 <…

数据库备份sql文件过大,phpAdmin无法执行Sql

数据库导出为sql文件&#xff0c;文件太大导致无法再Sql query执行&#xff0c;可使用命令行执行&#xff1a; windows系统&#xff1a; 1.切换到mysql 安装目录的bin目录下 cd C:\xampp\mysql\bin 2.执行备份sql还原mysql数据库 mysql -u root -p databasename < C://backu…