800. 数组元素的目标和
for(int i = 0,j = 0;i < n ; i ++ ){
while( j < m && a[i] + b[j] != x) j ++ ;
if(a[i] + b[j] == x) cout << i << ' ' << j <<endl ;
if(j == m) j = 0 ;
}
有思想啊!
for (int i = 0, j = m - 1; i < n; i ++ ){
while (j >= 0 && a[i] + b[j] > x) j -- ;
if (j >= 0 && a[i] + b[j] == x) cout << i << ' ' << j << endl;
}
双指针思想的真正体现!降低时间复杂度,i 往前走 , j 一直往后走 ,原因在于升序序列!