Modification of Intersection of sorted array

◇◆丶佛笑我妖孽 提交于 2019-12-08 05:32:09

问题


I came across this problem - input - I am given two sorted arrays a1 and a2. I need to find the elements that are not present in the second array.

I have two approaches

1) Hashtable - O(m+n)
[use when second array is small]

2) Binary Search - O(m*logn)
[use when second array is huge]

Are there any other approaches with better time complexities?

Thank You


回答1:


Just iterate them in parallel.

Here's a JavaScript example:

var a1 = [1, 2, 3, 4, 5, 6, 7, 9];
var a2 = [0, 2, 4, 5, 8];

findNotPresent(a1, a2); // [1, 3, 6, 7, 9]


function findNotPresent(first, second) {
    var first_len = first.length;
    var first_index = 0;

    var second_len = second.length;
    var second_index = 0;

    var result = [];

    while (first_index < first_len && second_index < second_len) {
        if (first[first_index] < second[second_index]) {
            result.push(first[first_index]);
            ++first_index;
        }
        else if (first[first_index] > second[second_index]) {
            ++second_index;
        }
        else {
            ++first_index;
            ++second_index;
        }
    }

    while (first_index < first_len) {
        result.push(first[first_index++]);
    }

    return result;
}

I believe it will take O(max(N, M)).



来源:https://stackoverflow.com/questions/15058066/modification-of-intersection-of-sorted-array

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!