社区讨论

萌新求助双指针模板

学术版参与者 3已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@lo8hnke0
此快照首次捕获于
2023/10/27 18:46
2 年前
此快照最后确认于
2023/10/27 18:46
2 年前
查看原帖
题意描述: 给定两个升序排序的有序数组 A 和 B,以及一个目标值 x。请你求出满足 A[i]+B[j]=x 的数对 (i,j)。数据保证有唯一解。
本题是AcWing上P800,可是要报基础课才能看题面
蒟蒻的循环是这么写的:
CPP
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);
        }
    }
而正解是:
CPP
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

回复

5 条回复,欢迎继续交流。

正在加载回复...