从逻辑上讲,它只需要两个数组的一次传递来查找公共元素,但在代码中执行此操作的 cpu高效方式最多?
一个有效的例子(Java):
public Long[] commonElements(long[] array1, long[] array2) {
int i1 = 0;
int i2 = 0;
List<Long> common = new ArrayList<>();
while(i1 < array1.length && i2< array2.length){
if(array1[i1] == array2[i2]){
common.add(array1[i1]);
i1++;
i2++;
} else if(array1[i1] > array2[i2]){
i2++;
} else {
i1++;
}
}
return common.toArray(new Long[common.size()]);
}
修改 理想情况下,如果两个数组都是降序或升序,则该函数应该有效