在两个排序的数组中找到缺少的数字

时间:2016-04-13 18:33:44

标签: arrays algorithm

我遇到了一个面试问题。

给出两个排序的数组 最初两者都设置了一组元素,但是从一个数组中删除了一个元素  找到已删除的元素 约束是我们必须在O(logn)中完成它 例如:

arr1[]={1,2,3,8,12,16};
arr2[]={1,2,8,12,16};
删除

元素是3

1 个答案:

答案 0 :(得分:4)

我正在从手机输入,所以这是一个伪代码,但你会得到它:

取arr1.len / 2.检查arr1 [3]和arr2 [3]。如果他们相等,那么丢失的vsalue在索引中大于3,否则小于3.这里我们得到8和12.所以缺少之前。我们采用指数3/2 = 1。比较arr1 [1]和arr2 [1]。它们是相等的,因此缺失在索引1之后和之前3.因此它是arr1 [2] = 3。

这是个主意。你正在进行二分搜索,每次都将搜索区域缩小一半。根据比较,您可以采用数组的左侧或右侧部分。你只需要实现这个并做一些检查,但我认为这个想法很明确。