为什么要从一个数组的最小和一个数组的最大开始双指针遍历?
如果两个数组都从头开始遍历
a 1 2 3
b 1 5
找4,最开始都指向第一个,1+1<4,但是下一步如果让b走就超过4了,还要再退回去或者提前判断,让下一位较小的一个数组往前走,这样操作更多。
一个从头,一个从尾这样遍历,从a[i]+b[j]中间的一个值开始,类似二分。假设a从头,b从尾开始,比a[0]+b[m-1]大的数都在i++这边,比他小的数都在j–这边,每次操作i还是j都是确定的,设m是a[0]+b[m-1],找x。如果小于m就去(-无穷,m)找,x>m就去(m,+无穷)找,另一部分就不用管了,所以不往回走也不会错过。