📅  最后修改于: 2023-12-03 14:58:18.573000             🧑  作者: Mango
有两个排序的整数列表A和B ,大小为n和m。给定一个数字x 。问题是找到A和B中,使它们的和等于x的对应元素的下标。若存在多个,则输出任意一个。
输入包括以下几行:
输入:
5 4 8
1 2 4 7 11
2 3 4 9
输出:
3 2
这道题是一道比较简单的题目,因为给定了两个已经排好序的列表,因此可以运用双指针算法,将头指针分别指向两个列表的首元素,然后判断其和是否等于给定的数x,如果等于则返回对应的下标,如果小于x,则将头指针向后移动,如果大于x,则将后指针向前移动。重复此过程直到找到一对对应元素,或者遍历完整个列表。
def find_sum_indexes(A, B, x):
i, j = 0, len(B)-1
while i < len(A) and j >= 0:
if A[i] + B[j] == x:
return (i, j)
elif A[i] + B[j] < x:
i += 1
else:
j -= 1
return (-1, -1)
# 测试代码
A = [1, 2, 4, 7, 11]
B = [2, 3, 4, 9]
x = 8
assert find_sum_indexes(A, B, x) == (3, 2)