为了能到远方,脚下的每一步都不能少.|

Dancing-Pierre

园龄:1年10个月粉丝:3关注:0

[Golang]力扣Leetcode - 349. 两个数组的交集(哈希表)

[Golang]力扣Leetcode - 349. 两个数组的交集(哈希表)

题目:给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序

链接力扣Leetcode - 349. 两个数组的交集.

示例1:

输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]

示例 2:

输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]
解释:[4,9] 也是可通过的

思路: 我的想法是,把 nums1 和 nums2 用哈希表 a 和 b 表示,然后再遍历 a 和 b,如果 a 中 key1 等于 key2,就把该 key 添加到输出 res 中,并且跳出该循环,这样好处是输出 res 不会出现重复的数。

Go代码:

package main
import "fmt"
func intersection(nums1 []int, nums2 []int) []int {
// 用一个map来存储数字以及出现的次数
a := make(map[int]int)
b := make(map[int]int)
for _, v := range nums1 {
a[v]++
}
for _, v := range nums2 {
b[v]++
}
// 定义存储最后结果的数组
var res []int
for k1 := range a {
for k2 := range b {
if k1 == k2 {
res = append(res, k1)
break
}
}
}
return res
}
func main() {
nums1 := []int{1, 2, 2, 1}
nums2 := []int{2, 2}
fmt.Print(intersection(nums1, nums2))
}

提交截图:
请添加图片描述

本文作者:Dancing-Pierre

本文链接:https://www.cnblogs.com/wyc-1009/p/17548023.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Dancing-Pierre  阅读(6)  评论(0编辑  收藏  举报  
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起