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: <golang-nuts@googlegroups.com> on behalf of ali oygur <alioy...@gmail.com>
Date: Wednesday, December 14, 2016 at 3:41 AM
To: golang-nuts <golang-nuts@googlegroups.com>
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 golang-nuts+unsubscr...@googlegroups.com.
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 golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to