【OJ刷题】同向双指针问题

devtools/2025/1/12 14:25:46/
这里是阿川的博客,祝您变得更强

✨ 个人主页:在线OJ的阿川
💖文章专栏:OJ刷题入门到进阶
🌏代码仓库:


写在开头

现在您看到的是我的结论或想法但在这背后凝结了大量的思考、经验和讨论


在这里插入图片描述

在这里插入图片描述

目录

  • 1. 题目介绍
  • 2. 题目拆解
  • 3. 具体详情
  • 4. 具体代码


1. 题目介绍

难度:中
题目练习:长度最小的子数组
题目信息:给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其总和大于等于 target 的长度最小的子数组[numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。
举个例子: 具体如图1所示
在这里插入图片描述

图1 举个例子

2. 题目拆解

本质上:观察规律,利用滑动窗口
特点是:同向双指针,不存在回退
解决方法:同向双指针算法,如图2所示
在这里插入图片描述

图2 同向双指针

3. 具体详情

1. 先计算每个具体数的累加总和
2. 判断累加总和与目标值之间的大小关系,从而进行移动判断
3. 返回具体的数组大小值


4. 具体代码

class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {int n = nums.size(), sum = 0, len = INT_MAX; //一个边界大小,一个是总和,一个是返回的数组大小for(int left = 0, right = 0; right < n; right++){sum += nums[right]; //每次循环进来先更新总和while(sum >= target) //判断移动方向{len = min(len, right - left + 1);sum -= nums[left++];}}return len == INT_MAX ? 0: len; //返回数组大小}
};

5. 夹带私货

若你能看到看到这篇文章且能看到这,则说明你我有缘留个关注吧,后面还会接着计算机408、底层原理、开源项目、以及数据、后端研发相关、实习、笔试/面试、秋招/春招、各种竞赛相关、简历相关、考研、学术相关……,祝你我变得更强


好的,到此为止啦,祝您变得更强
在这里插入图片描述

在这里插入图片描述

道阻且长 行则将至
个人主页:在线OJ的阿川大佬的支持和鼓励,将是我成长路上最大的动力 在这里插入图片描述

http://www.ppmy.cn/devtools/149887.html

相关文章

Mac Mini 最优雅的备份方式:使用极空间实现自动整机备份

Mac Mini 最优雅的备份方式&#xff1a;使用极空间实现自动整机备份 哈喽小伙伴们好&#xff0c;我是Stark-C~ 目前Mac mini M4到手已经一个多月&#xff0c;处理器性能大幅提升&#xff0c;内存也是破天荒的翻倍升级&#xff0c;再加上国补之后3500左右的价格&#xff0c;真…

el-table 自定义表头颜色

第一种方法&#xff1a;计算属性 <template><div><el-table:data"formData.detail"border stripehighlight-current-row:cell-style"{ text-align: center }":header-cell-style"headerCellStyle"><el-table-column fixed…

RabbitMQ 在 Go 中的核心方法详解

在使用 RabbitMQ 时,ExchangeDeclare、QueueDeclare、QueueBind 和 Consume 是四个非常重要的方法。它们分别用于声明交换机、声明队列、绑定队列到交换机以及消费消息。下面我们将详细讲解这些方法的参数及其作用。 1. ExchangeDeclare:声明交换机 ExchangeDeclare 用于声明…

【Pandas】pandas Series rsub

Pandas2.2 Series Binary operator functions 方法描述Series.add()用于对两个 Series 进行逐元素加法运算Series.sub()用于对两个 Series 进行逐元素减法运算Series.mul()用于对两个 Series 进行逐元素乘法运算Series.div()用于对两个 Series 进行逐元素除法运算Series.true…

机器学习之过拟合和欠拟合(二)

在机器学习中,过拟合和欠拟合是模型训练中常见的两种问题,它们反映了模型对数据的拟合程度及泛化能力的不足或过剩。 1. 什么是过拟合和欠拟合? 过拟合(Overfitting) 定义:模型对训练数据的学习过于深入,以至于连数据中的噪声或细节都被学到了,导致模型复杂度过高,泛…

使用sklearn训练语种识别模型

分析&#xff1a; 训练语种识别模型使用的是sklearn的MultinomialNB方法&#xff0c;MultinomialNB是一种基于贝叶斯定理的分类算法&#xff0c;特别适用于处理具有离散特征的分类问题&#xff0c;如文本分类中的单词计数。它属于朴素贝叶斯算法的一种&#xff0c;主要应用于高…

leetcode_2816. 翻倍以链表形式表示的数字

2816. 翻倍以链表形式表示的数字 - 力扣&#xff08;LeetCode&#xff09; 搜先看到这个题目 链表的节点那么多 已经远超longlong能够表示的范围 那么暴力解题 肯定是不可以的了 我们可以想到 乘法运算中 就是从低位到高位进行计算 刚开始 我想先反转链表 然后在计算 然后在进…

(九)大语言模型交互中的角色定义与区分

&#x1f4e2;&#x1f4e2;&#x1f4e2; 大家好&#xff0c;我是云楼Yunlord&#xff0c;CSDN博客之星人工智能领域前三名&#xff0c;多年人工智能学习工作经验&#xff0c;一位兴趣稀奇古怪的【人工智能领域博主】&#xff01;&#xff01;&#xff01;&#x1f61c;&#…