有效计算两个有序数组中的公共元素的方法

时间:2015-09-16 18:04:25

标签: arrays

从逻辑上讲,它只需要两个数组的一次传递来查找公共元素,但在代码中执行此操作的 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()]);
}

修改 理想情况下,如果两个数组都是降序或升序,则该函数应该有效

0 个答案:

没有答案