双指针、单调性的思考

单调性的好处就是使得不需要一一扫描判断一个一个排除,而是有可能集体判断排除一大片。二分法就是一个应用:当A[mid] <target,mid以及左边的元素都可以排除。

其实经典的排序数组2sum 问题和杨氏矩阵查找也是利用单调性进行集体判断、排除的一个应用:

1)l, r已经分别处在最大和最小的极限,当A[l] + A[r] < target,A[r]和最大值的和都小于target, 根据单调性可以判断A[l] 和区间[l + 1, r]上的所有数的和都小于target,故而可以++l,之后面临的相同的问题,只不过l的位置不同了,是个递归问题


杨氏矩阵也是,每一一次移动之后又都是一个杨氏矩阵查找问题,


2正数数组的子数组和等于target问题。

正数数组不是单调的,但是子数组和是单调的。可以这么理解i不回退:就是i不是相对于每个j的,不是某个j下的i,而是相对于全局的,不存在在下一个j回退的问题。i前进的时候是sum[i, j] > target,利用单调性判断,sum[i, k] (k >= j) > target,


3 排序数组2Minus问题:当A[j] - A[i] > target时,根据单调性,A[k] (k >= j) - A[i] 都会 大于target,故i推进不仅是当前j下的推进,不存在下一个j下回退的问题。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值