ac_800数组元素的目标和
题目描述
题目大意&链接
在两个数组中,找出满足 A[i] + B[j] = x 的数对(i,j)。
输入输出样例:
输入:
4 5 6
1 2 4 7
3 4 6 8 9
输出:
1 1
解题思路
这题采用双指针的思想,具体:
- 定义 i 指针指向 A 数组的左端点,j 指针指向 B 数组的右端点向左移动,由于 A,B 都是递增有序数组,当 A[i] + B[j] = x 时输出这个答案并跳出循环,i 指针右移继续寻找:
for(int i = 0, j = m - 1; i < n; i++)
{
while(j >= 0 && A[i] + B[j] > x) j--;
if(A[i] + B[j] == x)
{
printf("%d %d\n", i, j);
break;
}
}
完整代码
|
时间和空间复杂度
时间复杂度:O(n + m)
空间复杂度:O(n + m)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 ZW_Blog!