两个数组的交集 II

给定两个数组,编写一个函数来计算它们的交集。

示例 1:

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

示例 2:

输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [4,9]
说明:

输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。
我们可以不考虑输出结果的顺序。
方式一

func Intersect(nums1 []int, nums2 []int) []int {
    var map1 map[int][]int
    var map2 map[int][]int

    map1 = map[int][]int{}
    map2 = map[int][]int{}

    for _, value := range nums1 {
        map1[value] = append(map1[value], value)
    }

    for _, value := range nums2 {
        map2[value] = append(map2[value], value)

    }

    var sli = []int{}
    for k, v := range map1 {
        value, ok := map2[k]
        if !ok {
            continue
        }

        sliTemp := []int{}
        if len(v) >= len(value) {
            sliTemp = value
        } else {
            sliTemp = v
        }

        sli = append(sli, sliTemp...)
    }

    return sli
}

方式二


func IntersectEx(nums1 []int, nums2 []int) []int {
 var map1 map[int]int

 map1 = map[int]int{}

 for _, value := range nums1 {
     map1[value]++
 }

 var sli = []int{}

 for _, value := range nums2 {
     if len(map1) <= 0 {
         break
     }

     count, ok := map1[value]

     if !ok {
         continue
     }

     if count <= 0 {
         delete(map1, value)
         continue
     }

     map1[value]--
     sli = append(sli, value)

 }

 return sli
}


两种方式其实基本,都是求出来个数然后根据个数查找来插入


你可能感兴趣的:(两个数组的交集 II)