为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕尼黑8549860 2022-09-19 17:16:27
我想问一下在戈朗找到重复如果在蟒蛇,我可以这样做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上的“如果看到数字”?谢谢
查看完整描述

2 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

您可以循环访问数据并写入地图(如果地图不是重复的)。并附加到重复切片(如果地图中已存在)。示例代码如下所示。

注意:如果您有多个具有相同值的重复项,则此代码将显示所有多个重复项。如果您需要查看一次相同的重复值,则应更改此值


package main


import (

    "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]

}

游乐场


查看完整回答
反对 回复 2022-09-19
?
万千封印

TA贡献1891条经验 获得超3个赞

您正在寻找地图


用法示例:


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

    }

}


查看完整回答
反对 回复 2022-09-19
  • 2 回答
  • 0 关注
  • 147 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号