猿问

使用哈希图在戈朗中查找重复数字

我想问一下在戈朗找到重复


如果在蟒蛇,我可以这样做


def findDuplicate(data):

  seen = []

  for number in data:

    if number in seen:

      print(number)

    seen.append(number)

   

  print(seen)

data = [1,2,4,5,6,4]

findDuplicate(data)

#expected output 4

在golang中是否有任何类似的功能,例如python上的“如果看到数字”?谢谢


慕尼黑8549860
浏览 148回答 2
2回答

长风秋雁

您可以循环访问数据并写入地图(如果地图不是重复的)。并附加到重复切片(如果地图中已存在)。示例代码如下所示。注意:如果您有多个具有相同值的重复项,则此代码将显示所有多个重复项。如果您需要查看一次相同的重复值,则应更改此值package mainimport (    "fmt")func main() {    data := []int{1,2,4,5,6,4}    findDuplicates(data)}func findDuplicates(data []int)  {    values := make(map[int]struct{})    var duplicates []int    for _, d := range data {        if _, ok := values[d]; ok {            duplicates = append(duplicates, d)            continue        }        values[d] = struct{}{}    }    fmt.Println(duplicates) // Output: [4]}带游乐场

万千封印

您正在寻找地图用法示例:func findDuplicate(data []int) {    uniq := map[int]bool{}    for _, i := range data {        if uniq[i] {            fmt.Printf("found duplicate %v", i)        }        uniq[i] = true    }}用法示例:func findDuplicate(data []int) {    uniq := map[int]bool{}    for _, i := range data {        if uniq[i] {            fmt.Printf("found duplicate %v", i)        }        uniq[i] = true    }}
随时随地看视频慕课网APP

相关分类

Go
我要回答