mirror of
https://github.com/halfrost/LeetCode-Go.git
synced 2025-07-04 16:12:47 +08:00
49 lines
892 B
Go
49 lines
892 B
Go
package leetcode
|
|
|
|
import "sort"
|
|
|
|
// 解法一 桶排序,时间复杂度 O(n^2)
|
|
func relativeSortArray(A, B []int) []int {
|
|
count := [1001]int{}
|
|
for _, a := range A {
|
|
count[a]++
|
|
}
|
|
res := make([]int, 0, len(A))
|
|
for _, b := range B {
|
|
for count[b] > 0 {
|
|
res = append(res, b)
|
|
count[b]--
|
|
}
|
|
}
|
|
for i := 0; i < 1001; i++ {
|
|
for count[i] > 0 {
|
|
res = append(res, i)
|
|
count[i]--
|
|
}
|
|
}
|
|
return res
|
|
}
|
|
|
|
// 解法二 模拟,时间复杂度 O(n^2)
|
|
func relativeSortArray1(arr1 []int, arr2 []int) []int {
|
|
leftover, m, res := []int{}, make(map[int]int), []int{}
|
|
for _, v := range arr1 {
|
|
m[v]++
|
|
}
|
|
for _, s := range arr2 {
|
|
count := m[s]
|
|
for i := 0; i < count; i++ {
|
|
res = append(res, s)
|
|
}
|
|
m[s] = 0
|
|
}
|
|
for v, count := range m {
|
|
for i := 0; i < count; i++ {
|
|
leftover = append(leftover, v)
|
|
}
|
|
}
|
|
sort.Ints(leftover)
|
|
res = append(res, leftover...)
|
|
return res
|
|
}
|