【leetcode C++】滑动窗口

1. LCR 008. 长度最小的子数组

题目

给定一个含有 n 个正整数的数组和一个正整数 target

找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度如果不存在符合条件的子数组,返回 0 。

题目链接

. - 力扣(LeetCode)

画图 和 文字 分析

先说说有关滑动窗口的知识

滑动窗口特征和步骤:

  1. 无论是出窗口,还是进窗口,都是往一个方向上移动(不会后退)
  2. 步骤:
  • 进窗口
  • 检查
  • 出窗口
  • 更新数据(具体放的位置因题而异)

回到这道题,为什么符合滑动窗口的思想呢?

让 left = 0 , right = 0

通过 right 遍历数组 ,得到区间的所有数之和 sum

sum 与 target 相比

  1. 如果 sum < target

right++(进窗口)

     2. 如果 sum >= target (检查)

记录此时的区间长度 (更新数据)

left++(出窗口), sum -= (left 之前所指向的数),直到 回到第一种情况(里层循环结束条件)

外层循环结束条件(right >= n)

注意:

  1. 记录我们用 count 表示,由于求最小长度,count 的初始化为 INT_MAX , 如果最后没有进入更新数据那一块(整个数组之和 < target),记得判断 count 的值

举例:

输入:target = 7, nums = [2,3,1,2,4,3]

输出:2

 代码

class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {int sum =0;int left = 0;int right = 0;int count = INT_MAX;while(right < nums.size()){sum += nums[right];while(sum >= target){if(right - left + 1 < count){count = right - left + 1;}left++;sum -= nums[left - 1];}right++;}if(count == INT_MAX){count = 0;}return count;}
};

2. LCR 016. 无重复字符的最长子串

题目

给定一个字符串 s ,请你找出其中不含有重复字符的 最长连续子字符串 的长度。

题目链接

. - 力扣(LeetCode)

画图 和 文字 分析

步骤:

定义两个指针 , left = 0 , right = 0 , hash数组(存放字符的个数)

  1. 当 hash[right] <= 1

right++(进窗口)

     2. 当 hash[right] > 1(出窗口)

更新数据

left++ ,同时 hash[left - 1]-- ,直到回到第一种情况(里层循环结束条件)

外层结束条件(right >= n)

注意:

  1. 这种方法存在遗漏的情况,跳出整个循环后,一定要最后更新一下(如果碰到整个数组都没有重复元素的情况,不最后检查一下就是错误的)
  2. 如果不想实现注意事项一,那么把更新数据提前到进窗口那一步即可

举例:(题解二的做法)

输入: s = "abcabcbb"

输出: 3

 代码

class Solution {
public:int lengthOfLongestSubstring(string s) {int n = 0;int hash[128] = {0};int left = 0;int right = 0;while(right < s.size()){hash[s[right]]++;if(hash[s[right]] == 2){n = max(n,right - left);while(s[left] != s[right]){hash[s[left]]--;left++;}hash[s[left]]--;left++;right++;}else{right++;}}n = max(n,(int)s.size() - left);return n;}
};

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

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

相关文章

Django模板层——三种自定义模板simple_tag、inclusion_tag、filter的用法

目录 1. 前言 2. 前置操作 3. simple_tag 3.1 注意点 4. inclusion_tag 5. filter 6. 结尾 1. 前言 在前后端不分离的模式中&#xff0c;Django的模板语法尤为重要&#xff0c;我们可以动态传入变量&#xff0c;并在前端HTML中进行展示。在变量展示时&#xff0c;会有一…

本地运行github上下载的项目--接Git入门篇

1.了解项目 这是一个基于Spring Boot 和 Mybatis Plus 构建的Java项目&#xff0c;很经典的外卖项目&#xff0c;参考b站的黑马瑞吉外卖。 2.构建项目 SpringBoot项目&#xff0c;首先下载一些常见的项目要求的组件。然后配置如下&#xff1a; 看README&#xff0c;在阅读该…

【数据结构】初识数据结构与复杂度总结

前言 C语言这块算是总结完了&#xff0c;那从本篇开始就是步入一个新的大章——数据结构&#xff0c;这篇我们先来认识一下数据结构有关知识&#xff0c;以及复杂度的相关知识 个人主页&#xff1a;小张同学zkf 若有问题 评论区见 感兴趣就关注一下吧 目录 1.什么是数据结构 2.…

即刻体验 | 使用 Flutter 3.19 更高效地开发

我们已隆重推出全新的 Flutter 版本——Flutter 3.19。此版本引入了专为 Gemini 设计的新 Dart SDK、一个能让开发者对 Widget 动画实现精细化控制的全新 Widget&#xff0c;Impeller 更新带来的渲染性能提升、有助于实现深层链接的工具和对 Windows Arm64 的支持&#xff0c;以…

储能系统--液冷充电枪

前言 随着新能源汽车在市场中的占比不断攀升&#xff0c;续航里程和充电时间成为了制约新能源汽车发展的两个关键因素&#xff0c; 而随着续航里程的增加&#xff0c;电池容量也会相应的增加&#xff0c;充电时间也会加长&#xff0c;大功率快充技术逐渐成为解决续航瓶颈的关键…

golang语言系列:Web框架+路由 之 Echo

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是golang语言系列文章&#xff0c;本篇主要对 Echo 框架 的基本使用方法 进行学习 1.Echo是什么 Go 有众多Web框架&#xff0c;Echo 是其中的一个&#xff0c;官网介绍Echo有高性能、可扩展性、极简的特点。使用E…

C++的并发世界(五)——线程状态切换

0.线程状态 初始化&#xff1a;该线程正在被创建&#xff1b; 就绪&#xff1a;该线程在列表中就绪&#xff0c;等待CPU调度&#xff1b; 运行&#xff1a;该线程正在运行&#xff1b; 阻塞&#xff1a;该线程被阻塞挂机&#xff0c;Blocked状态包括&#xff1a;pend&#xff…

vulnhub靶机: DC-9

dc-9靶机下载 将靶机设置为NAT模式&#xff0c;本次实验使用的内网网段为192.168.198.0/24&#xff0c;kali的ip为192.168.198.172 信息搜集 ip主机扫描&#xff1a; nmap -sP 192.168.198.0/24 确定靶机ip为192.168.198.171 主机端口扫描&#xff1a; nmap -T4 -A -v 192…

RAG原理、综述与论文应用全解析

1. 背景 1.1 定义 检索增强生成 (Retrieval-Augmented Generation, RAG) 是指在利用大语言模型回答问题之前&#xff0c;先从外部知识库检索相关信息。 早在2020年就已经有人提及RAG的概念&#xff08;paper&#xff1a;Retrieval-augmented generation for knowledge-inten…

LlamaIndex——RAG概述

文章目录 一、使用LLM1. 模型2. 词嵌入3. Prompt 二、加载1. 加载2. 转换&#xff08;1&#xff09;高级API&#xff08;2&#xff09;低级API 三、索引/EmbeddingTop K Retrieval 四、存储五、查询六、评估1. 生成结果质量评估2. 检索结果评估 RAG&#xff08;检索增强生成&am…

复现k8s黄金票据学习

1.什么是黄金票据 在 Kubernetes 中&#xff0c;"黄金票据"并不是一个常见的术语。可能你想了解的是服务账户&#xff08;Service Account&#xff09;。服务账户是 Kubernetes 中用于身份验证和授权的一种机制。它们允许 Pods 或其他工作负载在 Kubernetes 集群中与…

Oracle 数据库中的全文搜索

Oracle 数据库中的全文搜索 0. 引言1. 整体流程2. 创建索引2-1. 创建一个简单的表2-2. 创建文本索引2-3. 查看创建的基础表 3. 运行查询3-1. 运行文本查询3-2. CONTAINS 运算符3-3. 混合查询3-4. OR 查询3-5. 通配符3-6. 短语搜索3-7. 模糊搜索&#xff08;Fuzzy searches&…

深入Tauri开发——从环境搭建到项目构建

深入Tauri开发——从环境搭建到项目构建 开启你的Tauri桌面应用开发之旅&#xff08;续&#xff09; 经过上一篇文章的基础介绍&#xff0c;现在让我们更进一步&#xff0c;详细阐述如何在Windows和macOS平台上顺利搭建Tauri应用所需的开发环境&#xff0c;并指导您从创建项目…

哲♂学家带你深♂入了解动态顺序表

前言&#xff1a; 最近本哲♂学家学习了顺序表&#xff0c;下面我给大家分享一下关于顺序表的知识。 一、什么是顺序表 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构&#xff0c;一般情况下采用数组存储。在数组 上完成数据的增删查改。 顺序表&#xff…

Rust线程间通信通讯channel的理解和使用

Channel允许在Rust中创建一个消息传递渠道&#xff0c;它返回一个元组结构体&#xff0c;其中包含发送和接收端。发送端用于向通道发送数据&#xff0c;而接收端则用于从通道接收数据。不能使用可变变量的方式&#xff0c;线程外面修改了可变变量的值&#xff0c;线程里面是拿不…

水果销售(源码+文档)

水果销售管理系统&#xff08;小程序、ios、安卓都可部署&#xff09; 文件包含内容程序简要说明含有功能项目截图客户端添加地址首页商品详细意见反馈待发货商品分类我的代付款我的地址搜索防骗指南资料修改登录注册 后端管理分类管理反馈管理订单管理商品管理用户管理 文件包…

OpenHarmony实战:轻量级系统之配置其他子系统

除上述子系统之外&#xff0c;还有一些必要但是无需进行移植的子系统。如&#xff1a;分布式任务调度子系统、DFX子系统。 这些子系统添加方式比较简单&#xff0c;在“vendor/MyVendorCompany/MyProduct/config.json”文件中进行如下配置即可&#xff1a; {"subsystem&…

vulhub中Apache Solr 远程命令执行漏洞复现(CVE-2019-0193)

Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发&#xff0c;主要基于 HTTP 和 Apache Lucene 实现。此次漏洞出现在Apache Solr的DataImportHandler&#xff0c;该模块是一个可选但常用的模块&#xff0c;用于从数据库和其他源中提取数据。它具有一个功能&#…

[RK3128_LINUX5.1] 关于 RetroArch 使用

问题描述 查看文档 docs\cn\Linux\ApplicationNote\Rockchip_Use_Guide_Linux_RetroArch_CN.pdf&#xff0c;描述为实验 make menuconfig 后勾选选项 Libretro cores and retroarch -> retroarch 但是SDK中并没有这个选项 解决方案&#xff1a; 目前发布的buildroot SDK…

7 X 24h智能安全运维再升级!Fortinet 全面集成全新 FortiGuard SOCaaS

数字化时代网络安全威胁层出不穷&#xff0c;网络犯罪分子的狡诈攻击手段不断翻新&#xff0c;传统安全防御手段亟需进化。更为棘手的是&#xff0c;网络安全专业人才的匮乏&#xff0c;让众多企业陷入安全运营的困境。为了有效应对这一挑战&#xff0c;Fortinet全新推出FortiG…