【基础算法】双指针

实现

for(int i=0, j=0; i<a&&j<b; i++){
	while(j<i&&check(i,j)) j++;
	//题目逻辑
}

应用

双指针本质是一个利用数组单调性的优化算法,能将原本O(n*m)的复杂度降为O(n+m)节省时间

注意:
1.利用双指针,首先要确认数组单调性,单调性就是指我们在访问数组时,不会重复访问前面已经访问过的数据。简单的暴搜对于这种问题就会全部访问。遇到类似的题,没有思路时,可以先写出暴搜解,观察可优化的地方,如果有上述情况,就可以用
2.双指针的题,有单个数组,也有两个数组的。对于一个数组,有两个指针都从前往后的类型,也有从两边向中间逼近的问题,本质上都是利用单调性对数组进行压缩,进行优化。对于两个数组的,每个数组一个指针,利用特性进行压缩。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值