[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))
}

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

扫描二维码关注公众号,回复: 14739119 查看本文章

猜你喜欢

转载自blog.csdn.net/a6661314/article/details/124937203