On 12/20/2013 06:17 PM, aldanor wrote:
On Saturday, 21 December 2013 at 01:42:04 UTC, Ali Çehreli wrote:

That's probably a bug, right? The indexes would probably become off as
the array gets shorter.

Note the .reverse there?

Yes, I missed that part. :)

Which makes sure indices don't get off. Still,
that's probably an inefficient way of doing this...

Yeah, every removal would move the right-hand elements one position to the left. But you would be removing only M times (the number of indexes). So the complexity is I think O(M logM) + O(NM) for sorting the indexing plus removing M elements by shifting at the order of N elements.

The range solution that I've come up with is I think O(M log M) + O(M) + O(N), for sorting the indexes, removing the duplicates with uniq and iterating the elements. Since O(M log M) dominates O(M), it should be O(M log M) + O(N).

Ali

P.S. Hm. I think I've reading an algorithms book lately. :p

Reply via email to