每日两题 / 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.hqwc.cn/news/620585.html

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

相关文章

功能测试_验证新浪邮箱登录的正确性

案例&#xff1a;验证验证新浪邮箱登录的正确性 功能测试_等价类设计用例&#xff1a; 步骤&#xff1a; 1:明确需求&#xff1a;邮箱能否登录 2:划分等价类&#xff1a;有效等价类、有效取值、无效等价类、无效取值 3&#xff1a;提取数据编写用例&#xff1a;用例编号、…

SpringBoot自定义application配置文件及使用

文章目录 前言一、application配置文件是什么&#xff1f;二、使用步骤1.添加配置数据 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; Spring Boot的application配置文件 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一…

如何在Linux系统部署Tale并实现无公网IP远程管理内网博客网站

文章目录 前言1. Tale网站搭建1.1 检查本地环境1.2 部署Tale个人博客系统1.3 启动Tale服务1.4 访问博客地址 2. Linux安装Cpolar内网穿透3. 创建Tale博客公网地址4. 使用公网地址访问Tale 前言 今天给大家带来一款基于 Java 语言的轻量级博客开源项目——Tale&#xff0c;Tale…

如何在面试中胜出?接口自动化面试题安排上!

一、平常用什么工具测接口? 主流接口测试工具&#xff1a;Jmeter、PostMan、RESTClient、Fiddler、Requests库&#xff0c;不同测试环境不同需求&#xff0c;选择不同工具。 1).Jmeter&#xff1a;Java开发一款开源免费工具&#xff0c;适合接口功能测试、接口自动化测试、…

app证书在设置在哪

根据近日工业和信息化部发布的《工业和信息化部关于开展移动互联网应用程序备案工作的通知》&#xff0c;相信不少要进行IOS平台App备案的朋友遇到了一个问题&#xff0c;就是apple不提供云管理式证书的下载&#xff0c;也就无法获取公钥及证书SHA-1指纹。 已经上架的应用不想重…

如何实现对空调状态监测的监控

随着科技的飞速发展和人们生活水平的持续提高&#xff0c;空调已经成为现代家庭和办公环境中不可或缺的一部分。然而&#xff0c;传统的空调使用方式往往存在能效低下、操作不便等问题。为了解决这些问题&#xff0c;智能空调控制器应运而生&#xff0c;它不仅能实现对空调状态…

OpenHarmony轻量系统开发【9】WiFi之STA模式连接热点

9.1AT指令操作WiFi 我们可以使用AT指令进行Hi3861 WiFi操作&#xff0c;连接热点、ping服务器等。 但是很多时候&#xff0c;我们需要实现开机后自动连接到某个热点&#xff0c;光靠AT指令不行。 Hi3861 为我们提供了WiFi操作的相关API&#xff0c;方便我们编写代码&#xff0…

如何用ServBay快速构建下一代GraphQL应用

在本指南中&#xff0c;我们将深入探讨如何利用ServBay一站式环境和Docker&#xff0c;构建可扩展的GraphQL微服务。我们将从微服务架构和GraphQL的基础知识入手&#xff0c;逐步深入到如何利用现代工具和技术构建、容器化并部署我们的微服务。 理解微服务架构 微服务架构是一…

举个栗子!Tableau 技巧(270):用 Lookup 函数创建多 KPI 文本表

在 Tableau 中&#xff0c;文本表常用于呈现明细数据。但其实&#xff0c;数据粉如果想在同一视图中查看多个数据指标&#xff0c;也可以用到文本表。 如下示例&#xff0c;是不是很直观的就可以查看&#xff1a;不同区域随时间推移的数据指标情况呢&#xff1f; 如何在 Tablea…

前后端分离vue.js+nodejs新闻文章发布论坛网站系统44x94

Vue&#xff1a; Vue是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是&#xff0c;Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c;还便于与第三方库或既有项目整合。另一方面&#xff0c;当与现代化的工具链以及…

数据库SQL语言实战(二)

目录 检索查询 题目一 题目二 题目三 题目四 题目五 题目六 题目七 题目八 题目九&#xff08;本篇最难的题目&#xff09; 分析 实现&#xff08;两种方式&#xff09; 模板 总结 检索查询 按照要求查找数据库中的数据 题目一 找出没有选修任何课程的学…

计算机毕业设计 工厂车间设备管理系统php+vue.js

该系统是以PHP为主要开发语言&#xff0c;集合MySQL数据库技术构建基于Web的以信息为目标的&#xff0c;动态的交互平台 PHP与Apache&#xff0c;MySQL的组合虽然有着诸多优势&#xff0c;但三种出自不同作者的开源软件要能很好的配合工作&#xff0c;需要很多手工配置&#x…