鉴于以下问题,我将不胜感激任何更正,因为我没有解决当前问题(取自我教授的考试之一!!!):
备注:这不是作业!
问题:
给定两个排序数组A
(带有长度n
)和B
(带有长度m
),其中每个
元素(在两个数组中)是一个实数和一个数字X
(也是一个实数),
我们想知道是否存在a ∈ A
and b ∈ B
,例如:
a + b = X
,在O(n+m)
运行时间。
解决方案 :
首先,我们从两个数组的末尾开始检查,因为我们不需要大于 的数字X
:
- 我 = n
k = 米
而 A[i] > X , i = i -1
- 而 B[k] > X , k = k -1
定义 j = 0 。现在从当前i
的 inA
和j
in开始运行B
:
while i > 0 , j < k
:if A[i]+B[j] == X
,然后返回两个单元格- 别的
j = j+1 , i = i -1
最后我们要么有这两个元素,要么我们会在一个或两个数组中超出界限,这意味着a + b = X
确实不存在这样的两个元素。
任何评论将不胜感激
谢谢