go 兩個數組取並集


實際生產中,對不同數組取交集、並集、差集等場景很常用,下面來說下兩個數組取差集

直接上代碼:

//兩個集合取並集

package main

import "fmt"

//思想:
//運用map,統計nums1中值出現的次數-map[值]次數
//遍歷nums2中的值,查看值是否在map中的出現

func intersect(nums1 []string, nums2 []string) []string {
    m := make(map[string]int)

    for _,v := range nums1 {
        m[v]++
    }
    fmt.Println(m)

    for _,v := range nums2 {

         times, _ := m[v]  //v是nums2中的值,m[v]是map中的值.m[v]==times
         fmt.Printf("1................@@@@@@@@@@@@@@..v=%d,times=%d\n",v,times)
        
         if times == 0{
                nums1 = append(nums1, v)
        }
    }
    return nums1
}

func main() {
    a1 := []string{"3","4","1"}
    a2 := []string{"2","1","3"}
    fmt.Println(intersect(a1,a2))
}



運行結果如下:

 

即獲得到兩個slice的並集。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM