Do we know anything about the structure of the slice?
It is inherent in the general notion that there must be a comparison of a new
item with existing ones to establish uniqueness. Even so, knowledge about the
structure of the input can make this comparison easier.
If the input is already ordered, then testing against the prior element is a
test against all elements.
If the input is integers in a small range then a bit mask presence test is good.
If avoiding allocation is important one could sort the list O(n log n) and then
scan it O(n)
The hash (map/dictionary) approach is good, general, and slightly more space
efficient with a slice of struct{} since presence testing is all that is
necessary.
An O(n) scan to build a histogram would let you know about ranges and potential
sections for subsequent processing.
Many well-known approaches.
From: <[email protected]> on behalf of ali oygur <[email protected]>
Date: Wednesday, December 14, 2016 at 3:41 AM
To: golang-nuts <[email protected]>
Subject: [go-nuts] Re: Idiomatic way to remove duplicates in a slice
there is good gist.
https://gist.github.com/alioygur/16c66b4249cb42715091fe010eec7e33
12 Ağustos 2012 Pazar 06:33:54 UTC+4 tarihinde Sathish VJ yazdı:
Is there an efficient, idiomatic way to remove duplicates in a slice?
If possible, I do want to retain the original order of items.
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.