leetcode分类刷题:滑动窗口(二、重复元素类型)
1、连续子数组、连续子串问题通常需要滑动窗口来求解,本篇文章对应的“二、重复元素类型”在此基础上对连续子数组、连续子串中重复元素个数、种类进行考察,此时,需要使用和维护哈希表进行左右指针的移动,因此这类题目对应的解法为:滑动窗口+哈希表
2、这类问题最关键的还是思考清楚左右指针如何更新:右指针遍历数组,左指针在哈希表满足一定条件时更新
904. 水果成篮
这道题目是 选取 最长只包含2种元素的连续子数组,思路是 滑动窗口+哈希表,设置左右边界[left, right],初始值均为0,右边界遍历数组,将窗口内的元素种类个数统计到哈希表中,关键在于窗口的左边界如何更新
from typing import List
import collections'''
904. 水果成篮
题目描述:你正在探访一家农场,农场从左到右种植了一排果树。这些树用一个整数数组 fruits 表示,其中 fruits[i] 是第 i 棵树上的水果 种类 。
示例 1:输入:fruits = [1,2,3,2,2]输出:4解释:可以采摘 [2,3,2,2] 这四棵树。
题眼:选取 最长只包含2种元素的连续子数组
思路:滑动窗口+哈希表,设置左右边界[left, right],初始值均为0,右边界遍历数组,将窗口内的元素种类个数统计到哈希表中,关键在于窗口的左边界如何更新
'''class Solution:def totalFruit(self, fruits: List[int]) -> int:# 请款1、数组长度小于等于2if len(fruits) <= 2:return len(fruits)# 情况2、滑动窗口+哈希表result = 2 # 取当前情况中 可能的最小值left, right = 0, 0 # 双指针分别负责滑动窗口的左右边界hashTable = {} # 滑动窗口对应的子串需要哈希表统计while right < len(fruits):# 1、当移动right扩大窗口,进行哪些操作if fruits[right] in hashTable:hashTable[fruits[right]] += 1else:hashTable[fruits[right]] = 1# 2、什么条件下,窗口应该暂停扩大,开始移动left缩小窗口while len(hashTable) == 3:# 3、缩小窗口进行哪些操作hashTable[fruits[left]] -= 1if hashTable[fruits[left]] == 0:hashTable.pop(fruits[left])left += 1# 4、更新结果result = max(result, right - left + 1) # 滑窗[left, right]是左闭右闭区间,子数组长度==元素个数right += 1return resultif __name__ == '__main__':obj = Solution()while True:try:in_line = input().strip().split('=')[1].strip()[1: -1]nums = []if in_line != '':for n in in_line.split(','):nums.append(int(n))# print(nums)print(obj.totalFruit(nums))except EOFError:break
3. 无重复字符的最长子串
这道题目的题眼是 无重复字符+最长子串,解题思路是 滑动窗口+哈希表:子串问题联想到滑动窗口,重复问题联想到哈希表,设置左右边界[left, right],初始值均为0,右边界遍历数组,将窗口内的元素种类统计到哈希表中,关键在于窗口的左边界如何更新
'''
3. 无重复字符的最长子串
题目描述:给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度
示例 1:输入: s = "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
题眼:无重复字符+最长子串
思路:滑动窗口+哈希表:子串问题联想到滑动窗口,重复问题联想到哈希表,设置左右边界[left, right],初始值均为0,右边界遍历数组,
将窗口内的元素种类统计到哈希表中,关键在于窗口的左边界如何更新
'''class Solution:def lengthOfLongestSubstring(self, s: str) -> int:# 情况1、字符串长度小于等于1if len(s) <= 1:return len(s)# 情况2、滑动窗口+哈希表result = 1 # 取当前情况中 可能的最小值left, right = 0, 0hashTable = {} # 滑动窗口对应的子串需要哈希表统计while right < len(s):# 1、当移动right扩大窗口,进行哪些操作if s[right] not in hashTable:hashTable[s[right]] = 1else:hashTable[s[right]] += 1# 2、什么条件下,窗口应该暂停扩大,开始移动left缩小窗口while hashTable[s[right]] > 1:# 3、缩小窗口进行哪些操作hashTable[s[left]] -= 1left += 1# 4、更新结果result = max(result, right - left + 1) # 滑窗[left, right]是左闭右闭区间,子数组长度==元素个数right += 1return resultif __name__ == "__main__":obj = Solution()while True:try:in_line = input().strip().split('=')[1].strip()[1: -1]s = ""if in_line != "":s = in_lineprint(obj.lengthOfLongestSubstring(s))except EOFError:break
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
leetcode分类刷题:滑动窗口(二、重复元素类型)
1、连续子数组、连续子串问题通常需要滑动窗口来求解,本篇文章对应的“二、重复元素类型”在此基础上对连续子数组、连续子串中重复元素个数、种类进行考察,此时,需要使用和维护哈希表进行左右指针的移动,因此这类题目对应的解法为…...
![](https://img-blog.csdnimg.cn/9cd1544f884c4665a1cc3b1d8861338c.png)
MySQL—buffer pool
一、buffer pool的介绍 Buffer pool是什么 一个内存区域,为了提⾼数据库的性能,数据库操作数据的时候,把硬盘上的数据加载到buffer pool,不直接和硬盘打交道,操作的是 buffer pool的数据,数据库的增删改查…...
![](https://www.ngui.cc/images/no-images.jpg)
《C和指针》笔记8: 枚举类型
枚举 (enumerated)类型就是指它的值为符号常量而不是字面值的类型,它们以下面这种形式声明: enum Jar_Type { CUP, PINT, QUART, HALF_GALLON, GALLON };这条语句声明了一个类型,称为Jar_Type。这种类型的变量按下列方式声明: e…...
![](https://img-blog.csdnimg.cn/f84f55b244044817a84be4552036dabe.png)
Python爬虫框架之Selenium库入门:用Python实现网页自动化测试详解
概要 是否还在为网页测试而烦恼?是否还在为重复的点击、等待而劳累?试试强大的Selenium!让你的网页自动化测试变得轻松有趣! 一、Selenium库到底是什么? Selenium 是一个强大的自动化测试工具,它可以让你直…...
![](https://www.ngui.cc/images/no-images.jpg)
docker swarm 部署服务网络问题
docker swarm 服务部署问题 docker swarm 部署服务时可能会出现,启动服务特别慢的情况,甚至一个service 启动后,容器会长时间处于 preparing 状态,直到 状态切换成 running 状态后,才会启动下一个service。然后查询资…...
![](https://www.ngui.cc/images/no-images.jpg)
1.00001git源码clone后进行编译(带调试)
– 新建用户 useradd postgres passwd postgres – 用户加入sude组 先cd到/etc/sudoers目录下 由于sudoers文件为只读权限,所以需要添加写入权限,chmod uw sudoers vim sudoers 找到root ALL (ALL) ALL这一行,在下一行加入username ALL (A…...
![](https://img-blog.csdnimg.cn/31bcaf9068074d84ad97987384a02a2c.png)
使用StorageClass动态创建pv
rook-ceph安装部署到位后,就可以开始来尝试使用StorageClass来动态创建pv了。 有状态的中间件在kubernetes上落地基本上都会用到StorageClass来动态创建pv(对于云上应用没有那么多烦恼,云硬盘很好用,但是对于自己学习和练习来说还…...
![](https://img-blog.csdnimg.cn/9f2633f8c30845caa3d06fda8146f357.png)
数据结构(Java实现)-ArrayList与顺序表
什么是List List是一个接口,继承自Collection。 List的使用 List是个接口,并不能直接用来实例化。 如果要使用,必须去实例化List的实现类。在集合框架中,ArrayList和LinkedList都实现了List接口。 线性表 线性表(lin…...
![](https://img-blog.csdnimg.cn/094aba52a8da48c9857a5a38e9517ad5.png)
性能优化维度
CPU 首先检查 cpu,cpu 使用率要提升而不是降低。其次CPU 空闲并不一定是没事做,也有可能是锁或者外部资源瓶颈。常用top、vmstat命令查看信息。 vmstat 命令: top: 命令 IO iostat 命令: Memory free 命令: 温馨提示:…...
![](https://img-blog.csdnimg.cn/f1166dc81db64294b4368179cf3ba7a9.png)
【C++】map的奇葩用法:和函数结合
2023年8月26日,周六下午 今天才发现map居然还能这样用... #include <iostream> #include <map> #include <functional>void printOne() {std::cout << "已经打印出1" << std::endl; }void printTwo() {std::cout <<…...
![](https://www.ngui.cc/images/no-images.jpg)
关于JVM的参数类型
JVM参数类型,主要是可以分为三类。分别是: 标准参数 例如: -help-server-client-version-showversion-cp-classpath 等等,这类参数的特点是在jdk各版本里基本不会变的,相对稳定。 X参数 X参数也就是非标准化参数&am…...
![](https://www.ngui.cc/images/no-images.jpg)
HTTP协议中的Content-Type及其常见类型
什么是Content-Type? Content-Type是HTTP协议中的一个头部字段,用于指示请求或响应中所传输的实体的媒体类型。 为什么使用Content-Type? 使用Content-Type可以告知接收方如何解析和处理传输的数据,确保数据能够正确地被解析和…...
![](https://img-blog.csdnimg.cn/c39616be7c5049369797c5b77d04ac53.png)
android Junit4编写自测用例
10多年的android开发经验,一直以来呢,也没有使用过android自带的测试代码编写。说来也惭愧。今天也花了点时间稍微研究了下。还挺简单。接下来就简单的说一下。 新建工程 直接默认新建一个工程,就会有两个目录androidTest和test(unitTest)两…...
![](https://img-blog.csdnimg.cn/img_convert/a4c92b01641221170fe9b779c1c33897.png)
arcgis:画一幅自己城市的shp地图
首先打开ArcGis10.6,点击带黄底的小加号,添加底图。 可以选择中国地图彩色版,然后双击,转动鼠标滑轮找到属于自己的城市。 点击-目录,在新建的文件夹里右击-新建-shapefile。 格式选择折线,先把主要河流道路…...
![](https://www.ngui.cc/images/no-images.jpg)
采购油封时要考虑的因素
对于依赖机械和设备的行业来说,油封的选择是一个关键的决定,以确保平稳运行并防止流体泄漏。由于有多种选择,了解购买油封时要考虑的关键因素对于确保适合特定应用至关重要。让我们深入研究一下在此选择过程中发挥关键作用的考虑因素。 1、运…...
![](https://www.ngui.cc/images/no-images.jpg)
【无标题】科目一笔记
载人超过核定人数 校车/公路客运汽车/旅游客运汽车 未达到20%,-6超过20%以上,-12 七座以上载客汽车 1. 超过20%以上未达到50%,-6 2. 超过50%以上未达到100%,-9 其他载客汽车 1. 超过20%以上未达到50%,-3 2. 超过50…...
![](https://img-blog.csdnimg.cn/70db7c62a72d4052850f0adf745622f5.png)
java八股文面试[数据结构]——HashMap和HashTable区别
HashMap源码中的重要常量 DEFAULT_INITIAL_CAPACITY: HashMap的默认容量,16 MAXIMUM_CAPACITY: HashMap的最大支持容量,2^30 TREEIFY_THRESHOLD:Bucket中链表长度大于该默认值,转化为红黑树。 UNTREEIFY_THRESHOLD…...
![](https://www.ngui.cc/images/no-images.jpg)
乐趣无限:10款基于Pygame的经典游戏合集
引言 游戏开发一直是许多程序员和游戏爱好者追求的梦想。而Pygame作为一款功能强大的游戏开发库,为我们提供了实现各种有趣游戏的工具和接口。在本文中,我将向大家介绍10款基于Pygame的经典游戏合集,从简单的猜数字到刺激的飞机…...
![](https://www.ngui.cc/images/no-images.jpg)
php检测数组是否存在某个键,和是否存在某个变量
一、array_key_exists() array_key_exists() 是一个 PHP 内置的函数,用于判断数组中是否存在指定的键。该函数接收两个参数,第一个是键名,第二个是数组。 $arr array(name > Jack, age > 20, country > China);if (array_key_exi…...
![](https://www.ngui.cc/images/no-images.jpg)
c++中的const与constexpt的区别
c中的const与constexpr的区别 const const 是一种修饰符,用于声明一个只读的常量。它可以用于变量、函数参数和函数返回类型。声明为 const 的变量的值在初始化后就不能再改变。 适用场景: const 适用于声明运行时常量,在编译时无法确定值…...
![](https://img-blog.csdnimg.cn/ceb8c930648a4336a05f8aefd2359fad.png)
android系统启动流程之SystemServer运行过程
SystemServer进程的启动流程:直接看代码: SystemServer是Java中的一个进程,执行入口是SystemServer.java.main(); SystemServer.java.main();-->new SystemServer().run();-->createSystemContext();//创建系统上下文:虽然SystemServe…...
![](https://img-blog.csdnimg.cn/946333e682cf4a8b8bc47c7cf4ace015.png)
Leetcode 1812。判断国际象棋棋盘中一个格子的颜色
国际棋盘问题: 给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标。下图是国际象棋棋盘示意图。 如果所给格子的颜色是白色,请你返回 true,如果是黑色,请返回 false 。 给定坐标…...
![](https://img-blog.csdnimg.cn/d9f520510964461b95b76ed2e2843454.png)
9个python自动化脚本,PPT批量生成缩略图、添加图片、重命名
引言 最近一番在整理资料,之前买的PPT资源很大很多,但归类并不好,于是一番准备把这些PPT资源重新整理一下。统计了下,这些PPT资源大概有2000多个,一共30多G,一个一个手动整理这个投入产出比也太低了。 作为…...
![](https://img-blog.csdnimg.cn/172b61e464c64d278a338c53b689e6a8.png)
计算机竞赛 基于大数据的社交平台数据爬虫舆情分析可视化系统
文章目录 0 前言1 课题背景2 实现效果**实现功能****可视化统计****web模块界面展示**3 LDA模型 4 情感分析方法**预处理**特征提取特征选择分类器选择实验 5 部分核心代码6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于大数据…...
![](https://img-blog.csdnimg.cn/1fd036595ca543439e830b1129ae30f2.png)
基于Java的旅游信息推荐系统设计与实现,springboot+vue,MySQL数据库,前后端分离,完美运行,有三万字论文。
基于Java的旅游信息推荐系统设计与实现,springbootvue,MySQL数据库,前后端分离,完美运行,有三万字论文。 前台主要功能:登录注册、旅游新闻、景区信息、美食信息、旅游线路、现在留言、收藏、预定旅游线路…...
![](https://img-blog.csdnimg.cn/dfd1115ea5bc4d35b8a77cfe56279bd4.gif)
合宙Air724UG LuatOS-Air LVGL API控件--曲线 (Arc)
曲线 (Arc) 曲线控件,也可以称为弧。因为 Arc 本身就是弧,弧形的意思。根据控件的样子也能推测出它的使用场景,一般用在加载器(就是等待界面转的圈圈)或者数值显示,数值调节这些场景。曲线控件分了两个部分,前景和背…...
![](https://img-blog.csdnimg.cn/ccdf099ed7b54542ba0a960b872d3e41.png)
09-微信小程序 网络请求API(实现轮播广告和简易的聊天窗口)
09-微信小程序API网络请求(实现轮播广告和简易的聊天窗口) 文章目录 微信小程序API服务器域名配置注意网络相关APIrequestRequestTask 请求任务对象object.success 回调函数object.fail 回调函数案例代码(实现轮播图) WebSocket案例代码(实现…...
![](https://img-blog.csdnimg.cn/0fe7a57160634e9593ef23a56009c8ed.png#pic_center)
Visual Studio 2017安装和项目配置
目录 前言1. What、Why and How1.1 What1.2 Why1.3 How 2. 安装3. 创建新项目4. 配置OpenCV库4.1 下载opencv安装包4.2 配置系统环境变量4.3 VS项目环境配置4.4 总结 5. 已有项目添加6. Tips6.1 常用快捷键6.2 字体和颜色选择6.3 配置编译路径 结语下载链接参考 前言 最近因为项…...
![](https://img-blog.csdnimg.cn/img_convert/053398536ab4b7e5c6a7bf41278042fd.png#?w=447&h=446&e=png&b=ffffff)
【提升接口响应能力的最佳实践】常规操作篇
文章目录 1. 并行处理简要说明CompletableFuture是银弹吗?测试案例测试结论半异步,半同步总结 2. 最小化事务范围简要说明编程式事务模板 3. 缓存简要说明 4. 合理使用线程池简要说明使用场景线程池的创建参数的配置建议 线程池的监控线程池的资源隔离 5…...
![](/images/no-images.jpg)
宁波电器网站制作/新闻稿撰写
mybatis3中增加了使用注解来配置Mapper的新特性,本篇文章主要介绍其中几个Provider的使用方式,他们是:SelectProvider、UpdateProvider、InsertProvider和DeleteProvider。MyBatis 3 User Guide中的最后一章描述了注解的简单用法,…...
![](https://img-blog.csdnimg.cn/f482c426fafd480c8fd2c69d5b84004e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Ya36ZuoR2llR2ll,size_20,color_FFFFFF,t_70,g_se,x_16)
公司做网站哪里做/嘉兴seo外包
...
wordpress4.7/推广普通话手抄报内容50字
前言:最近对公司的APP进行一些控件的升级(很久以前就想动,我已经忍了很久了),记录一下ActionBar 转 ToolBar 期间遇到的大大小小的坑,顺便做个笔记。一、先说一开始的使用1.在xml布局文件的头部添加Toolbar…...
![](https://images.cnblogs.com/cnblogs_com/kuku/msk.gif)
如何使用阿里云做网站/拉新平台
在开发 Flex 或 AIR 应用程序的时候,如果需要把图片、声音等资源嵌入到目标文件中的时候,一般需要使用到 Embed Embed 标记的功能就是把资源生成一个相应的类,以下是 Embed 标记应的地情况说明: 1、在代码中使用 Embed 标记 [Embe…...
![](/images/no-images.jpg)
如何把做的网站放到百度上/百度一下百度首页官网
创建一个数据库create database aaa[数据库名]; 删除一个数据库drop database aaa[数据库名]; create database bbbon primary--指定主数据文件( namebbb, size5mb, maxsize100bm, filenamec:\test.mdf )log on( namebbb_log, size5mb, maxsize100bm, filenamec:\tes…...
![](http://ww2.sinaimg.cn/bmiddle/6bd9b9c1gw1e7marmklxxj20iv1fyqda.jpg)
dede我的网站/windows优化大师要会员
老徐FrankXuLei受邀为上海师翊网络科技有限公司讲授《微软WCF分布式开发与SOA架构设计课程》 合影留念。大家的评价很高!也给出非常有价值的建议。课程评价邮件截图 微软研发微软中国MSDN新青年IT学习网 上海师翊网络专注于教育类软件系统研发上海教育51CTO技术社区…...