// are there common items between the two arrays
// input: [1, 2, 3, 4], [2, 6, 7] -> Output: true
// input: [1, 2, 3, 4], [9, 6, 7] -> Output: false
// input: [1, 2, 3, 4], [] -> Output: false
// input: [], [] -> Output: false
package main
import (
"fmt"
)
func getOccurenceMap [T comparable](arr []T) map[T]int {
occurenceMap := make(map[T]int)
for _, ele := range arr {
count := occurenceMap[ele]
updatedCount := count + 1
occurenceMap[ele] = updatedCount
}
return occurenceMap
}
func checkCommonality [T comparable](arr1, arr2 []T) bool {
if (len(arr1) == 0 || len(arr2) == 0) {
return false
}
// Create occurerence hash map for one array
occArr2 := getOccurenceMap(arr2)
// Iterate through 1 hash map and check for hits in the other map
for _, ele := range arr1 {
_, exists := occArr2[ele]
if (exists) {
return true
}
}
return false
}
func main() {
// False cases
fmt.Println(checkCommonality([]int{1, 2, 2, 4}, []int{5, 6}) == false)
fmt.Println(checkCommonality([]string{}, []string{"a", "b"}) == false)
fmt.Println(checkCommonality([]string{}, []string{}) == false)
// True cases
fmt.Println(checkCommonality([]int{1, 2, 2, 4}, []int{5, 6, 1}) == true)
}