leetcode刷题实录:3
前言
开始刷leetcode,保证平均每天一道题吧,学学别人的思路,提高编程技术。
目录
文章目录
- 前言
- 目录
- 正文
- 问题3
- 举例
- 分析
- 什么是滑动窗口?
- 如何移动?
- 代码
正文
问题3
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
举例
输入:“abcabcbb”
输出:因为无重复字符的最长子串是 “abc”,所以其长度为 3。
分析
问题的一个核心要点是子串而不是子序列,子序列可以直接用set求解,子串则要求元素是连续的。
这道题主要用到思路是:滑动窗口
什么是滑动窗口?
其实就是一个队列,比如例题中的 abcabcbb,进入这个队列(窗口)为 abc 满足题目要求,当再进入 a,队列变成了 abca,这时候不满足要求。所以,我们要移动这个队列!
如何移动?
我们只要把队列的左边的元素移出就行了,直到满足题目要求!
一直维持这样的队列,找出队列出现最长的长度时候,求出解!
时间复杂度:O(n)
空间复杂度:
代码
实现过程中利用了,集合的特性,自动消除重复元素。
def lengthOfLongestSubstring(self, s: str):if not s:return 0left_len = 0lookup = set()n = len(s)max_len = 0cur_len = 0for i in range(n):cur_len += 1while s[i] in lookup:lookup.remove(s[left_len])left_len += 1cur_len -= 1if cur_len > max_len:max_len = cur_lenlookup.add(s[i])return max_len
leetcode刷题实录:3相关推荐
- leetcode刷题实录:4
前言 开始刷leetcode,保证平均每天一道题吧,学学别人的思路,提高编程技术. 目录 文章目录 前言 目录 正文 问题3:寻找两个有序数组的中位数 举例 分析 正文 继续刷题 问题3:寻找两个有序 ...
- leetcode刷题实录:2
前言 开始刷leetcode,保证平均每天一道题吧,学学别人的思路,提高编程技术. 目录 文章目录 前言 目录 正文 问题2 举例 分析 代码 正文 问题2 给出两个 非空 的链表用来表示两个非负的整 ...
- leetcode刷题实录:1
前言 开始刷leetcode,保证平均每天一道题吧,学学别人的思路,提高编程技术. 目录 文章目录 前言 目录 正文 问题1 示例: 解答 正文 问题1 给定一个整数数组 nums 和一个目标值 ta ...
- LeetCode刷题Python实录
使用Python的LeetCode刷题 前言 题目 1408. 数组中的字符串匹配 508. 出现次数最多的子树元素和 1089. 复写零 剑指 Offer 14- I. 剪绳子 1175. 质数排列 ...
- LeetCode刷题C++实录
LeetCode刷题C++实录 1. 两数之和 121. 买卖股票的最佳时机 382. 链表随机节点 622. 设计循环队列 623. 在二叉树中增加一行 640. 求解方程 761. 特殊的二进制序 ...
- 华为工程师总结的LeetCode刷题笔记提供下载,太优秀了
前言: 最近又有不少老铁在后台留言说,想进大厂,但是算法不好.最近我整理了一份刷题实录,这份刷题实录,也让我进了心仪的大厂.现在开放分享给大家.希望对大家有所帮助. 任何的算法题,如同写作文一样,都有 ...
- LeetCode刷题记录15——21. Merge Two Sorted Lists(easy)
LeetCode刷题记录15--21. Merge Two Sorted Lists(easy) 目录 LeetCode刷题记录15--21. Merge Two Sorted Lists(easy) ...
- LeetCode刷题记录14——257. Binary Tree Paths(easy)
LeetCode刷题记录14--257. Binary Tree Paths(easy) 目录 前言 题目 语言 思路 源码 后记 前言 数据结构感觉理论简单,实践起来很困难. 题目 给定一个二叉树, ...
- LeetCode刷题记录13——705. Design HashSet(easy)
LeetCode刷题记录13--705. Design HashSet(easy) 目录 LeetCode刷题记录13--705. Design HashSet(easy) 前言 题目 语言 思路 源 ...
最新文章
- Android实战简易教程-第三十四枪(基于ViewPager和FragmentPagerAdapter实现滑动通用Tab)...
- 别找了,Thonny 才是 Python 小白的最理想的 IDE
- tomcat 禁用access.log
- 搜索引擎提交注意事项
- redirect路由配置 vue_Web前端:Vue路由进阶配置
- 在MSF中怎么区分易混淆的工作项类型:Bug、风险和问题(我个人的理解)
- linux 重定向 不换行,Ada:重定向到stdout时省略换行符(测试Put)
- android webview video标签,Android WebView支持html5 video标签
- LSI加入多核联盟参与编程与应用标准制定
- python获取当前服务器路径_利用Python实现对Web服务器的目录探测
- 集中化Linux日志管理系统
- 微信推广营销--如何提高微信订阅号的图文转化率?
- 了解下常用分析JVM参数以及优化工具
- b365老掉线 h3c路由器_H3C路由器PPP连接的常见故障及解决方法
- 服务器CPU概念总结
- 时间类计算:双代号网络图、单代号网络图、时标网络图
- 【基础知识】~ 锁存器/触发器、寄存器
- 上海尤劲恩AI视觉检测为工业制造赋能,帮助企业实现智造升级
- VS2013/2015 各版本 产品密钥
- 革命展馆沙盘拍照打卡学习活动制作方案,border-color 属性用于设置四个边框的颜色。