我有两个排序数组。我需要找出两者是否不同。
这些数组具有特定范围内的元素。
不止一个元素可能不同。
数组可以有不同的大小。在这种情况下,我应该能够指出差异
一个粗略的例子:
输入:
array1: 1 2 4 5 8 9 12
array2: 1 4 8 10 12 13 14
这里的范围是 1-15。
什么是最优化的比较算法?
我也应该能够指出差异和相似之处,例如,两个数组中都有 4,而第二个数组中缺少 5。
我的解决方案:
两个指针来跟踪数组的索引。
将它们指向数组的开头。
开始比较前两个元素。
如果两者相等--> 移动到下一个。
别的找到数组的两个元素中的最大值。说 array1 有更大的元素。
对另一个数组中的元素进行二进制搜索。(array2) --> 该数组中该元素的 pos 说 pos
丢弃数组的元素直到 pos。
增量指针。丢弃数组的那部分直到这个指针。重复。
这具有n log n
(远低于平均水平,这是您必须搜索每个元素的时候)的复杂性。