github.com/maikovskiys/l1tasks@v0.0.0-20230927052451-6436d7687dc9/develop/dev11/main.go (about) 1 package main 2 3 import "fmt" 4 5 /* 6 Реализовать пересечение двух неупорядоченных множеств. 7 */ 8 func main() { 9 a := []int{23, 3, 1, 2} 10 b := []int{6, 2, 4, 23} 11 result := intersection(a, b) 12 fmt.Println(result) 13 } 14 func intersection(a, b []int) []int { 15 counter := make(map[int]int) 16 var result []int 17 18 for _, elem := range a { 19 if _, ok := counter[elem]; !ok { 20 counter[elem] = 1 21 } else { 22 counter[elem] += 1 23 } 24 } 25 for _, elem := range b { 26 if count, ok := counter[elem]; ok && count > 0 { 27 counter[elem] -= 1 28 result = append(result, elem) 29 } 30 } 31 return result 32 }