go: add «1122. Relative Sort Array»

Signed-off-by: Matej Focko <me@mfocko.xyz>
This commit is contained in:
Matej Focko 2024-06-11 22:20:18 +02:00
parent 6a3f0058c0
commit 1e48c99bfb
Signed by: mfocko
GPG key ID: 7C47D46246790496

31
go/relative-sort-array.go Normal file
View file

@ -0,0 +1,31 @@
package relative_sort_array
import (
"cmp"
"slices"
)
func relativeSortArray(arr1 []int, arr2 []int) []int {
// remap the keys
keys := make(map[int]int, len(arr2))
for i, x := range arr2 {
keys[x] = i
}
// sort with the given keys
slices.SortFunc(arr1, func(x, y int) int {
xi, xFound := keys[x]
yi, yFound := keys[y]
if !xFound {
xi = 1000 + x
}
if !yFound {
yi = 1000 + y
}
return cmp.Compare(xi, yi)
})
return arr1
}