从两个数组中查找特定的元素总和

use*_*639 4 arrays algorithm binary search

你能帮帮我一下吗?:"设A和B是自然数的递增有序数组,K是一些任意自然数.找到一个有效的算法,确定所有可能的索引对(i,j),使A [i] + B [j] = K.证明算法的正确性并估计其复杂性."

我应该迭代第一个数组并在另一个数组上进行二进制搜索吗?谢谢 :)

ale*_*nis 6

没有!

两个阵列都是有序的,因此您可以执行以下操作:

  • 在迭代器itA的开头放置一个迭代器A
  • itB在最后放置一个迭代器B
  • 以相反的方向移动迭代器,*itA + *itB在每次迭代时进行测试.如果值等于K,则返回两个索引.如果该值小于K,则递增itA.否则,减少itB.

当你浏览两个数组时,你就会在线性时间内完成.