当前位置: 首页 > news >正文

刷LeetCode

文章目录

      • 滑动窗口算法
        • 1 涉及知识点 :unordered_set 容器
        • 2 参数详情
        • 3 例题

滑动窗口算法

  • 滑动的窗口,每次记录下窗口的状态,再找出符合条件的窗口
  • 使用滑动窗口减少时间复杂度

1 涉及知识点 :unordered_set 容器

说明:unordered_set容器与set的区别就是set容器会自行对存储的数据排序,而 unordered_set 容器不会。

  • 不再以键值的形式存储数据,而是直接存储数据的值
  • 容器内部存储的各个元素的值都不相等,且不能被修改
  • 不会对容器内部的元素进行排序

2 参数详情

unordered_set<int> lookup;//构造函数
lookup.find(s[i]) //查询元素是否在结合内
lookup.end() //end()函数是最后一个元素的下一个位置
lookup.erase(s[left]);//删除元素
lookup.insert(s[i]) //插入元素

3 例题

题目描述:无重复字符的最长子串

输入: s = "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

解题思路: 利用滑动窗口的思想,也就是定义一个lookup窗口,让窗口一步一步滑动遍历输入的字符串。划过的字符与刚刚输入的字符比较,若是不相等继续滑动,滑出来的长度就是不含有重复字符的最长字串的长度。若是相等,就是下次再比较就从相等的字符的下一个字符开始。
注意:若是空字符串,直接返回0

参考代码:c++

class Solution {
public:int lengthOfLongestSubstring(string s) {if (s.size()==0)return 0;int maxlong=0;int left=0;unordered_set <int> lookup;for(int i=0;i<s.size();i++){while(lookup.find(s[i])!=lookup.end()){lookup.erase(s[left]);left++;}lookup.insert(s[i]);maxlong=max(maxlong,i-left+1);}return maxlong;}
};
http://www.lryc.cn/news/22468.html

相关文章:

  • Spring 大白话系列:工厂
  • 喜讯!华秋电子荣获第六届“蓝点奖”十佳分销商奖
  • Linux概述
  • 中级嵌入式系统设计师2015下半年上午试题及答案解析
  • 华为OD机试模拟题 用 C++ 实现 - 删除指定目录(2023.Q1)
  • 【正点原子FPGA连载】第二十章AXI4接口之DDR读写实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南
  • 超出认知的数据压缩 用1-bit数据来表示32-bit的梯度 语音识别分布式机器学习 梯度压缩 论文精读
  • 深度剖析指针(上)——“C”
  • 学习 Python 之 Pygame 开发魂斗罗(六)
  • LeetCode题解:1238. 循环码排列,归纳法,详细注释
  • 全新后门文件Nev-3.exe分析
  • 线性回归系数解释
  • 22.2.27打卡 Codeforces Round #852 (Div. 2) A~D
  • 如何查看Spring Boot各版本的变化
  • 程序员是否要加入创业公司?
  • 2023软件测试工程师全新技术栈,吃透这些,起薪就是25k~
  • 【ChatGPT情商大考验】ChatGPT教我谈恋爱
  • C++类内存结构模型
  • HTML#4超链接标签,列表标签,表格标签和布局标签
  • 本科课程【数字图像处理】实验汇总
  • nginx安装lua、jwt模块,通过lua验证jwt实现蓝绿发布样例
  • 【redis的几种数据结构及在Java里的应用案例】
  • 【mybatis】 01- mybatis快速入门
  • 【C语言每日一题】杨氏矩阵(源码以及改进源码)
  • JavaScript 面向对象【快速掌握知识点】
  • Qt——自定义Model
  • 用 .NET 启动你的 DJI Ryze Tello 无人机
  • sed 功能详解
  • 整数二分思路详解
  • 基于java的进销库存管理系统(Vue+Springboot+Mysql)前后端分离项目,附万字课设论文