每日两题 / 3. 无重复字符的最长子串 84. 柱状图中最大的矩形(LeetCode热题100)

3. 无重复字符的最长子串 - 力扣(LeetCode)
image.png
双指针,l和r从字符串最左边开始,保存l和r之间的所有字符
移动r,若新加入的字符和已有字符重复,则不断移动l,直到l和r之间不出现重复字符
注意:移动的过程中需要维护l和r之间的字符
每次移动完r并保证l和r之间无重复字符,则维护ans

class Solution {
public:int lengthOfLongestSubstring(string s) {int l = 0, r = 0;int ans = 0;set<char> ss;while (r < s.size()) {if (ss.count(s[r])) {while (s[l] != s[r]) {ss.erase(s[l]);l ++ ;} l ++ ;}ss.insert(s[r]);ans = max(ans, r - l + 1);r ++ ;}return ans;}
};

84. 柱状图中最大的矩形 - 力扣(LeetCode)
image.png

解题的关键在于最小的柱子,对所有柱子进行排序,假设当前柱子的高度为h,则不用考虑高度大于h的柱子,考虑高度小于h的柱子
那么能勾勒的最大矩形为,以:向左第一个小于h的柱子与向右第一个小于h的柱子为底,高为h的矩形
从最小高度开始查找最大矩形,即可

class Solution {
public:int largestRectangleArea(vector<int>& heights) {vector<pair<int, int>> a;for (int i = 0; i < heights.size(); ++ i) {a.push_back({heights[i], i});}sort(a.begin(), a.end());set<int> s;s.insert(-1), s.insert((int)heights.size());int ans = 0;for (int i = 0; i < a.size(); ++ i) {// 根据柱子的位置找左右边界int l = *(prev(s.lower_bound(a[i].second)));int r = *(s.upper_bound(a[i].second));ans = max(ans, a[i].first * (r - l - 1));s.insert(a[i].second);}return ans;}
};

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

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

相关文章

【机器学习】深入剖析贝叶斯算法原理及其广泛应用

一、引言 在机器学习的广阔领域中&#xff0c;贝叶斯算法以其独特的概率推理方式占据了重要的地位。它不仅为分类问题提供了有效的解决方案&#xff0c;还在自然语言处理、信息检索、垃圾邮件过滤等诸多领域发挥着不可替代的作用。 贝叶斯算法的基本思想源于贝叶斯定理&#xf…

数据结构学习之路--实现带头双向循环链表的详解(附C源码)

嗨嗨大家~本期带来的内容是&#xff1a;带头双向循环链表的实现。在上期文章中我们提到过带头双向循环链表&#xff0c;那么它的实现又是怎样的呢&#xff1f;今天我们来一探究竟&#xff01; 目录 前言 一、认识带头双向循环链表 1 认识双向链表 2 带头双向循环链表的定…

Oracle获取对象的DDL创建语句

1.命令行方式&#xff08;如&#xff1a;sqlplus&#xff09; ## 用户 select dbms_metadata.get_ddl(USER,TEST) from dual;## 表 select dbms_metadata.get_ddl(TABLE,TEST,T1) from dual;## 表空间 select dbms_metadata.get_ddl(TABLESPACE,TBS_NAME) from dual;## 索引 s…

【教学类-50-06】20240410“数一数”4类星号图片制作PDF学具

作品展示&#xff1a; 背景需求&#xff1a; 前文遍历四个文件夹&#xff0c;分别将每个文件夹内的10个图片的左上角加入星号&#xff0c;显示难度系数 【教学类-50-05】20240410“数一数”4类图片添加“难度星号”-CSDN博客文章浏览阅读55次&#xff0c;点赞2次&#xff0c;…

Linux: softirq 简介

文章目录 1. 前言2. softirq 实现2.1 softirq 初始化2.1.1 注册各类 softirq 处理接口2.1.2 创建 softirq 处理线程 2.2 softirq 的 触发 和 处理2.1.1 softirq 触发2.1.2 softirq 处理2.1.2.1 在 中断上下文 处理 softirq2.1.2.2 在 ksoftirqd 内核线程上下文 处理 softirq 3.…

麒麟系统(kylin)安装ssh后,无法上传文件

1.赋予文件夹权限 chmod 777 filename 2.修改ssh配置文件 vi /etc/ssh/sshd_config 将Subsystem sftp /xxxxx 改为Subsystem sftp internal-sftp 重启服务 sudo service sshd restart 断开ssh连接&#xff0c;重新连接&#xff0c;即可正常上传文件

Harmony鸿蒙南向外设驱动开发-Touchscreen

功能简介 Touchscreen驱动用于驱动触摸屏使其正常工作&#xff0c;该驱动主要完成如下工作&#xff1a;对触摸屏驱动IC进行上电、配置硬件管脚并初始化其状态、注册中断、配置通信接口&#xff08;I2C或SPI&#xff09;、设定Input相关配置、下载及更新固件等操作。 在HDF&am…

配置交换机 SSH 管理和端口安全

实验1:配置交换机基本安全和 SSH管理 1、实验目的 通过本实验可以掌握&#xff1a; 交换机基本安全配置。SSH 的工作原理和 SSH服务端和客户端的配置。 2、实验拓扑 交换机基本安全和 SSH管理实验拓扑如图所示。 3、实验步骤 &#xff08;1&#xff09;配置交换机S1 Swit…

Android 四大组件启动

service: startService启动过程分析 - Gityuan博客 | 袁辉辉的技术博客 在整个startService过程&#xff0c;从进程角度看服务启动过程 Process A进程&#xff1a;是指调用startService命令所在的进程&#xff0c;也就是启动服务的发起端进程&#xff0c;比如点击桌面App图标…

LeetCode-62. 不同路径【数学 动态规划 组合数学】

LeetCode-62. 不同路径【数学 动态规划 组合数学】 题目描述&#xff1a;解题思路一&#xff1a;动态规划&#xff0c;动规五部曲解题思路二&#xff1a;动态规划&#xff08;版本二&#xff09;解题思路三&#xff1a;数论 题目描述&#xff1a; 一个机器人位于一个 m x n 网…

解决Windows报错:包无法进行更新、相关性或冲突验证。解决无法用Windows照片查看器打开照片问题。

目录 报错信息 解决方法 步骤一&#xff1a;查看照片打开的默认应用是否设置为Windows照片查看器。 步骤二&#xff1a;对注册表进行修改 方法一&#xff1a; 方法二&#xff1a; 报错信息 新电脑打开jpg或png文件会报以下错误 解决方法 步骤一&#xff1a;查看照片打开…

Coding and Paper Letter(八十九)

CPL之第八十九期。 1 Coding: 1.openai通用代理转换是一个用于将其他厂商服务转为openai 标准接口相应的工具. 通过该工具, 可以将其他厂商的服务转为openai 标准接口. 讯飞星火,通义千问,gemini,openai,copilot,double&#xff0c;kimi&#xff0c;智谱清言 使用spring2webf…

电源监视继电器HRTH-J-2H2D AC220V 导轨安装 JOSEF约瑟

系列型号&#xff1a; HRTH-Y-2H2D-X-T跳位监视、合位监视、电源监控继电器&#xff1b; HRTH-Y-2Z-X-T跳位监视、合位监视、电源监控继电器&#xff1b; HRTH-Y-2H-X-T跳位监视、合位监视、电源监控继电器&#xff1b; HRTH-J-2H2D-X-T跳位监视、合位监视、电源监控继电器…

数学基础:矩阵

来自: https://www.shuxuele.com/algebra/matrix-determinant.html 一、矩阵的行列式 二、矩阵简单知识 三、矩阵乘法 四、单位矩阵 五、逆矩阵一&#xff1a;简单2阶矩阵求法 六、逆矩阵二&#xff1a;3、4阶逆矩阵求法 6.1 求余子式矩阵 6.2 求代数余子式矩阵 6.3 求伴随矩阵…

pyplot+pandas实现操作excel及画图

1、安装jupyter lab pip install jupyterlab # 启动 建议在指定的项目文件夹下 开启cmd窗口并执行 jupyter lab 启动后会自动打开浏览器访问 2、安装依赖 pip install matplotlib pip install xlrd pip install pandas 3、读取excel import pandas as pddf pd.read_excel(hi…

区块链游戏:探索未来的可能性与挑战

区块链游戏是一种将区块链技术应用于游戏领域的创新产品&#xff0c;它为游戏行业带来了全新的模式和可能性。本文将深入探讨区块链游戏的优点、挑战和未来趋势&#xff0c;帮助读者了解这一新兴领域。 一、区块链游戏的优点 1. 公平性&#xff1a;区块链技术保证了游戏中的物…

享元模式:优化资源利用的高效策略

在面向对象的软件开发中&#xff0c;享元模式是一种结构型设计模式&#xff0c;旨在减少内存使用&#xff0c;通过共享尽可能多的相似对象来提高应用程序的效率。本文将详细介绍享元模式的定义、实现、应用场景以及优缺点。 1. 享元模式的定义 享元模式&#xff08;Flyweigh…

Flume实时读取目录文件到HDFS案例

【尚硅谷】大数据技术之Flume教程从入门到实战_哔哩哔哩_bilibili 目录 flume简介 flume案例 1、监控端口数据官方案例 2、实时读取目录文件到HDFS案例 flume简介 Flume是Cloudera提供的一个高可用的&#xff0c;高可靠的&#xff0c;分布式的海量日志采集、聚合和传输的系…

多因子模型的数据处理

优质博文&#xff1a;IT-BLOG-CN 数据处理的基本目的是从多量的、可能是杂乱无章的、难以理解的数据中抽取并推导出有价值、有意义的数据。特别是金融数据&#xff0c;存在数据缺失&#xff0c;不完整以及极端异常值等问题&#xff0c;对于我们的分析和建模影响很多。 对于我…

五、书架开发--3.弹出框功能开发、离线缓存功能开发

实现弹出框真实业务逻辑 私密阅读tab业务逻辑 1、根据点击的tab不同&#xff0c;从而展示出不同的popup弹窗 每个tab中都有自己的index&#xff0c;点击的时候获取这个index&#xff0c;就可以知道当前点击的是哪个tab&#xff0c;然后用switch-case来根据不同的index展示不…