349. 两个数组的交集

image.png

  1. package main
  2. import "fmt"
  3. func intersection(nums1 []int, nums2 []int) []int {
  4. m :=make(map[int]struct{})
  5. for i:=range nums1{
  6. if _,ok:=m[nums1[i]];!ok{
  7. m[nums1[i]]= struct{}{}
  8. }
  9. }
  10. var res []int
  11. hasMap :=make(map[int]struct{})
  12. for _,v:=range nums2{
  13. _,ok:=m[v]
  14. _,hasOK:= hasMap[v]
  15. if ok&&!hasOK{
  16. res =append(res,v)
  17. hasMap[v]= struct{}{}
  18. }
  19. }
  20. return res
  21. }
  22. func main() {
  23. fmt.Println(intersection([]int{1,2,2,1},[]int{2,2}))
  24. fmt.Println(intersection([]int{4,9,5},[]int{9,4,9,8,4}))
  25. }

image.png