dongxun1244 2014-05-26 12:23
浏览 53
已采纳

比较两片

Is there a way in Go to compare two slices and get the elements in slice X that are not in slice Y and vice versa?

    X := []int{10, 12, 12, 12, 13}
    Y := []int{12, 14, 15}

func compare(X, Y []int)  

calling compare(X, Y)   
    result1 := []int{10, 12, 12, 13} // if you're looking for elements in slice X that are not in slice Y

calling compare(Y, X)
    result2 := []int{14, 15} // if you're looking for elements in slice Y that are not in slice X
  • 写回答

5条回答 默认 最新

  • donglijuan8227 2014-05-26 17:00
    关注

    Something like this should work:

    package main
    
    import "fmt"
    
    func main() {
        X := []int{10, 12, 12, 12, 13}
        Y := []int{12, 14, 15}
    
        fmt.Println(compare(X, Y))
        fmt.Println(compare(Y, X))
    }
    
    func compare(X, Y []int) []int {
        m := make(map[int]int)
    
        for _, y := range Y {
            m[y]++
        }
    
        var ret []int
        for _, x := range X {
            if m[x] > 0 {
                m[x]--
                continue
            }
            ret = append(ret, x)
        }
    
        return ret
    }
    

    http://play.golang.org/p/4DujR2staI

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥15 绘制多分类任务的roc曲线时只画出了一类的roc,其它的auc显示为nan
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?