1
0
Fork 0
mirror of https://gitlab.com/mfocko/LeetCode.git synced 2024-11-10 00:09:06 +01:00
LeetCode/go/relative-sort-array.go

32 lines
443 B
Go
Raw Normal View History

package main
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
}