0
点赞
收藏
分享

微信扫一扫

350. 两个数组的交集 II、Leetcode的Go实现

DYBOY 2022-01-09 阅读 37

350. 两个数组的交集 II

给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。

示例 1:

提示:

hash:

func intersect(nums1 []int, nums2 []int) []int {
    if len(nums1)<len(nums2){
        nums1,nums2=nums2,nums1
    }
    m := make(map[int]int,len(nums1))  // map保存长数组中元素出现的次数
    res := []int{}
    for i:=0;i<len(nums1);i++{
        m[nums1[i]]++  
    }
    for i:=0;i<len(nums2);i++{
        if m[nums2[i]]>0{
            res=append(res,nums2[i])
            m[nums2[i]]--
        }
    } 
    return res
}

先排序再遍历

func intersect(nums1 []int, nums2 []int) []int {
    sort.Ints(nums1)
    sort.Ints(nums2)
    i,j,len1,len2:=0,0,len(nums1),len(nums2)
    res:=[]int{}
    for i<len1&&j<len2{
        if nums1[i]<nums2[j]{
            i++
        }else if nums1[i]>nums2[j]{
            j++
        }else {
            res=append(res,nums1[i])
            i++
            j++
        }
    }
    return res
}
举报

相关推荐

0 条评论