c++双指针思路

本文介绍了C++编程中双指针的应用,包括相向指针和滑动窗口两种常见方式。双指针常用于数组操作,如排序数据处理、删除指定元素等。滑动窗口主要用于找到满足特定条件的最小区间,如连续和的最小区间数目。文中以力扣76题为例,解析了如何利用双指针解决实际问题。
摘要由CSDN通过智能技术生成

代码类型:双指针

解释:在代码中有两个指针,各自有指向数据的位置,通过移动两个指针,进行判断与修改实现一些功能。

通常用于数组操作,有两种方式,一种是前后两指针,相向而行,通常这种做法会改变元素顺序;另一种方式是快慢两指针,同向而行,操作过程一般不会改变元素相对顺序,又称为滑动窗口。

双指针(相向指针)的常用题型:排序数据(包含正数和负数)平方按排序、删除指定元素

双指针(滑动窗口)的常用题型:满足连续和的最小区间数目、包含子序列的最小窗口

滑动窗口的主要步骤:

1.初始化变量,快指针、慢指针(一般慢指针先初始化,循环里满足条件再变化,快指针在循环中每次自增一),有时候需要搭配哈希表,用于记录一些数据,一般是当前滑动窗口存在的数据种类及个数;

2.for循环,循环变量是快指针,所以每次循环快指针就会自增。

3.循环体中第一步是统计快指针指向的数据(存入哈希,累加等);第二步是一个while循环或者if判断,这个循环用来尝试不断缩短滑动窗口,也就是慢指针增加,并更新当前的答案&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值