双指针的深度理解 缩减搜索空间

当我们遇到双指针的时候,有些简单的我们可能会写,但一遇到难点的却又无从下手,那是因为我们没有理解双指针的性质。

有时候我们写双指针的题,为什么我们不会遗漏一些情况呢,下面我就来讲一下双指针的缩减搜索空间

我们可以参考力扣上的例题来理解这个问题:

力扣:167.两数之和|| - 输入有序数组

该题的约束条件为 i < j 时,那么我们可以取正方形的右上部分

 那么当(i,j) 为(1,6)的时候,A[i] + A[j] > target ,因为 i 是从上到下依次递增的,因为A[1] + A[6] > target,那么A[2] + A[6] > target、A[3] + A[6] > target....... 所以就只能动 j 那么 j 就向前移动一位。

 

同样的思路,我们来看只动 i 的情况,按照上一个计算当我们计算到了第二阶段,sum =  A[1] + A[5] ,如果sum < target, 那么当我们移动 j 的时候,因为 sum = A[1]+A[5], 那么sum < A[1] + A[4]、sum < A[1] + A[3] ........  所以无论怎么移动 j 都无法得到结果。所以,只能移动 i ,那么我们就将 i 进行加一。

颜色的红色的深度表示两个数之和的大小

依次类推,我们总能得到一个最终结果值,那么我们就得到了那个值。

 

 

 

 

 

  

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值