计算两个排序数组之间的差异

时间:2015-06-30 18:59:57

标签: arrays algorithm sorting

尝试找到一种有效的算法,找出两个排序数组之间的差异,而其中一个数组始终是另一个数组的子集。

例如,我们可以有两个排序的数组

  • [1,2,3,4]
  • [1,3,4]

第二个数组是第一个数组的子集。

潜在解决方案: 我能想到的最有效的算法是同时迭代数组并比较元素,因为它们是排序的。另一个优化是创建两个数组之间长度差异的计数器,如果我们遇到了不同元素的数量,它们等于我们在前面计算的差值,那么算法可以在那个点停止。

也许这是最有效的算法,但我想听听你的家伙'意见。

1 个答案:

答案 0 :(得分:1)

这取决于子集中缺失元素的数量。

EG。如果缺少一个数字,您可以二进制搜索缺失的数字。复杂度大致为O(log(n))。与线性搜索(O(n))相比,这是有效的。

通常,如果缺少k个数字,您可以在O(klogn)时间内找到它们。因此,只要k很小,这就是有效的解决方案。