Drill

ProblemsGo › data

Drop the repeats

easydataHash mapsArraysGo

A feed sometimes sends the same id twice, and a clean list keeps only the first sighting.

dedupe(values: list<int>) → list<int>

Go needs a compiler and Drill does not host one yet, so this page is the reference rather than an exercise: the problem, worked examples, and the solution in full. To type it out, the same problem runs in Python.

Solve it in Python →

Where you start

func dedupe(values []int) []int {
	
}

Worked examples

CallResult
dedupe([]int{1, 2, 3, 1, 2})[]int{1, 2, 3}
dedupe([]int{1, 1, 1})[]int{1}
dedupe([]int{})[]int{}
dedupe([]int{3, 1, 2, 1, 3})[]int{3, 1, 2}

Hint

Carry a set of what you have already seen, and only push a value the first time you meet it.

Reference solution in Go
func dedupe(values []int) []int {
	seen := map[int]bool{}
	result := []int{}
	for _, v := range values {
		if !seen[v] {
			seen[v] = true
			result = append(result, v)
		}
	}
	return result
}

The same problem in another language

More data problems in Go