尝试找到一种有效的算法,找出两个排序数组之间的差异,而其中一个数组始终是另一个数组的子集。
例如,我们可以有两个排序的数组
第二个数组是第一个数组的子集。
潜在解决方案: 我能想到的最有效的算法是同时迭代数组并比较元素,因为它们是排序的。另一个优化是创建两个数组之间长度差异的计数器,如果我们遇到了不同元素的数量,它们等于我们在前面计算的差值,那么算法可以在那个点停止。
也许这是最有效的算法,但我想听听你的家伙'意见。
答案 0 :(得分:1)
这取决于子集中缺失元素的数量。
EG。如果缺少一个数字,您可以二进制搜索缺失的数字。复杂度大致为O(log(n))。与线性搜索(O(n))相比,这是有效的。
通常,如果缺少k个数字,您可以在O(klogn)时间内找到它们。因此,只要k很小,这就是有效的解决方案。