剑指 Offer II 075. 数组相对排序
2022-06-24 本文已影响0人
邦_
这道题说实话。我看了好久才明白它的意思。。
按照数组二的顺序进行排序。。
比方说数组一是[2,3,1,3,2,4,6,7,9,2,19]
数组二是[2,1,4,3,9,6]
那么按照数组二排序的话 所有的2排在前边。然后是所有的1 所有的4 ...
最后二里面没有包含的按照升序排在最后边。。
func relativeSortArray(_ arr1: [Int], _ arr2: [Int]) -> [Int] {
var map = Dictionary<Int,Int>()
var res = arr1
for num in arr1 {
if let count = map[num] {
map[num] = count + 1
}else {
map[num] = 1
}
}
//用来记录插入元素位置
var index = 0
for num in arr2 {
if let count = map[num] {
for _ in 0..<count {
res[index] = num
if let mapCount = map[num] {
map[num] = mapCount - 1
if mapCount - 1 == 0 {
map.removeValue(forKey: num)
}
}
index += 1
}
}
}
let keyArray = map.keys.sorted()
for keyNum in keyArray {
//剩余元素的个数
let keyCount = map[keyNum]!
for _ in 0..<keyCount {
res[index] = keyNum
index += 1
}
}
return res
}