版权声明:本文为博主原创文章,转载请附上博文链接! https://blog.csdn.net/weixin_43851310/article/details/88082549
package main
import "fmt"
//设计算法:
//运用map,统计nums1中值出现的次数-map[值]次数
//遍历nums2中的值,查看值是否在map中的出现
func intersect(nums1 []int, nums2 []int) []int {
m := make(map[int]int)
var arr []int
for _,v := range nums1 {
m[v]++
}
fmt.Println(m)
for _,v := range nums2 {
times, ok := m[v] //v是nums2中的值,m[v]是map中的值.m[v]==times
fmt.Printf("v=%d,times=%d\n",v,times)
if ok && times > 0 {
arr = append(arr, v)
m[v]-- //所有出现的数字都+1,最后要减掉1
}
}
return arr
}
func main() {
a1 := []int{1,2,2,2,3}
a2 := []int{2,2,3}
fmt.Println(intersect(a1,a2))
}
Output:
map[1:1 2:3 3:1]
v=2,times=3
v=2,times=2
v=3,times=1
[2 2 3]