用于从重复数组中查找丢失元素的 Javascript 程序
给定两个除了一个元素之外彼此重复的数组,即其中一个数组中的一个元素丢失,我们需要找到那个丢失的元素。
例子:
Input: arr1[] = {1, 4, 5, 7, 9}
arr2[] = {4, 5, 7, 9}
Output: 1
1 is missing from second array.
Input: arr1[] = {2, 3, 4, 5}
arr2[] = {2, 3, 4, 5, 6}
Output: 6
6 is missing from first array.
一种简单的解决方案是遍历数组并逐个检查元素并在找到不匹配的元素时标记丢失的元素,但这种解决方案需要线性时间过大的数组。
另一种有效的解决方案是基于二进制搜索方法。算法步骤如下:
- 在更大的数组中开始二分查找,得到 mid 为 (lo + hi) / 2
- 如果两个数组的值相同,则缺少的元素必须在右侧,因此将 lo 设置为 mid
- 否则将 hi 设置为 mid 因为如果中间元素不相等,则缺少的元素必须位于较大数组的左侧。
- 对于单个元素和零元素数组,单独处理一个特殊情况,单个元素本身将是缺失的元素。
如果第一个元素本身不相等,则该元素将是缺少的元素。/li>
下面是上述步骤的实现
Javascript
Javascript
输出 :
Missing Element is 1
如果输入数组的顺序不同怎么办?
在这种情况下,缺少的元素只是两个数组的所有元素的 XOR。感谢 Yolo Song 的建议。
Javascript
输出 :
Missing Element is 1
有关更多详细信息,请参阅有关从重复数组中查找丢失元素的完整文章!