萌新求助双指针模板
  • 板块学术版
  • 楼主too_simple
  • 当前回复5
  • 已保存回复5
  • 发布时间2022/7/23 14:57
  • 上次更新2023/10/27 18:46:44
查看原帖
萌新求助双指针模板
366937
too_simple楼主2022/7/23 14:57

题意描述: 给定两个升序排序的有序数组 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

2022/7/23 14:57
加载中...