gpt4 book ai didi

arrays - 给定一个数字 X ,在两个排序数组中找到两个元素,例如 A[i]+B[j] = X in O(n+m)

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:38:39 27 4
gpt4 key购买 nike

鉴于以下问题,我将不胜感激,因为我没有解决方案对于当前问题(取 self 教授的一次考试!!!):

备注:这不是作业!

问题:

给定两个排序数组 A (长度为 n )& B (长度为 m ),其中每个

元素(在两个数组中)是一个实数,一个数字 X (也是实数),

我们想知道是否存在a ∈ Ab ∈ B ,例如:

a + b = X , 在 O(n+m)运行时间。

解决方案:

首先,我们从两个数组的末尾开始检查,因为我们不需要大于X 的数字。 :

  • 我=n
  • k = m

  • 当 A[i] > X , i = i -1

  • 当 B[k] > X , k = k -1

定义 j = 0 。现在从当前i开始运行在A , 来自jB :

  • while i > 0 , j < k :
  • if A[i]+B[j] == X , 然后返回两个单元格
  • 其他 j = j+1 , i = i -1

最后我们要么有两个元素,要么我们有一个越界或两个数组,这意味着没有两个元素这样 a + b = X确实存在。

如有任何意见,我们将不胜感激

谢谢

最佳答案

你不应该同时调整ij。如果总和太大,你应该减少i。如果太小,增加j

关于arrays - 给定一个数字 X ,在两个排序数组中找到两个元素,例如 A[i]+B[j] = X in O(n+m),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11228532/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com