题意描述:
给定两个升序排序的有序数组 A 和 B,以及一个目标值 x。请你求出满足 A[i]+B[j]=x 的数对 (i,j)。数据保证有唯一解。
(本题是AcWing上P800,可是要报基础课才能看题面)
蒟蒻的循环是这么写的:
for(int i = 1, j = 1; i <= n; ++ i) {
while(a[i] + b[j] < x && j <= m) j ++;
while(a[i] + b[j] > x && j >= 1) j --;
if(j >= 1 && a[i] + b[j] == x) {
printf("%d %d", i - 1, j - 1);
}
}
而正解是:
for(int i = 1, j = m; i <= n; ++ i) {
while(a[i] + b[j] > x && j >= 1) j --;
if(a[i] + b[j] == x) {
printf("%d %d", i - 1, j - 1);
break;
}
}
求助,真的搞不清区别/kk