[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))
}
提交截图:
扫描二维码关注公众号,回复:
14739119 查看本文章