Quick actions

cmd+k|ctrl+k

Navigation

Languages

CommonItems

Snippet info

Language

Go

Visibility

public

Author

max.suclatter

Created

2025-03-28T15:25:26.800724Z

Updated

2025-03-28T15:40:56.927441Z

// 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)
    
}
INFO