Sunday, February 19, 2023
import "sort"
func relativeSortArray(arr1 []int, arr2 []int) []int {
var result []int
numberFrequencyArr1 := make(map[int]int)
// hash map of frequency of numbers in arr1
for _, v := range arr1 {
numberFrequencyArr1[v]++
}
// take the equal elements of arr1 from the numberFrequencyArr1
for _, num := range arr2 {
currentFrequency := numberFrequencyArr1[num]
for i := 0; i < currentFrequency; i++ {
result = append(result, num)
}
// reset frequency in arr1
numberFrequencyArr1[num] = 0
}
var uncommonNumbers []int
for num, frequency := range numberFrequencyArr1 {
for i := 0; i < frequency; i++ {
uncommonNumbers = append(uncommonNumbers, num)
}
}
sort.Ints(uncommonNumbers)
result = append(result, uncommonNumbers...)
return result
}