Skip to content
Advertisement

Return sequence with elements from array A except those that are present in B p times

I want to write a function that receives two sequences: A and B and returns sequence C which should contain all elements from A (in order) except those that are present in B p times.

For example sequences

A=[2,3,9,2,5,1,3,7,10]

B=[2,1,3,4,3,10,6,6,1,7,10,10,10]

Should return C=[2,9,2,5,7,10]

When p = 2

I wrote it like this:

JavaScript

But is there a better way to make this in terms of time complexity?

Also, should my solution be expressed as O(3n) or O(n)?

Advertisement

Answer

Is there a better way to make this in terms of time complexity?

Don’t use includes() inside the filter callback! That gives it a quadratic time complexity. You already have a lookup map by item, just use that directly to achieve a linear solution! Get rid of the intermediate pTimes:

JavaScript

Should my solution be expressed as O(3n) or O(n)?

That’s the same. Constant factors are ignored in Landau notation.

User contributions licensed under: CC BY-SA
2 People found this is helpful
Advertisement