class Solution {
public:
vector<int> relativeSortArray(vector<int>& arr1, vector<int>& arr2) {
}
};
1122. 数组的相对排序
给你两个数组,arr1
和 arr2
,arr2
中的元素各不相同,arr2
中的每个元素都出现在 arr1
中。
对 arr1
中的元素进行排序,使 arr1
中项的相对顺序和 arr2
中的相对顺序相同。未在 arr2
中出现过的元素需要按照升序放在 arr1
的末尾。
示例 1:
输入:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9,6] 输出:[2,2,2,1,4,3,3,9,6,7,19]
示例 2:
输入:arr1 = [28,6,22,8,44,17], arr2 = [22,28,8,6] 输出:[22,28,8,6,17,44]
提示:
1 <= arr1.length, arr2.length <= 1000
0 <= arr1[i], arr2[i] <= 1000
arr2
中的元素 arr2[i]
各不相同 arr2
中的每个元素 arr2[i]
都出现在 arr1
中原站题解
golang 解法, 执行用时: 0 ms, 内存消耗: 2.3 MB, 提交时间: 2021-06-11 16:29:56
func relativeSortArray(arr1 []int, arr2 []int) []int { mp := make(map[int]int) for i, a := range arr2 { mp[a] = i } sort.Slice(arr1, func(i, j int) bool { c1, h1 := mp[arr1[i]] c2, h2 := mp[arr1[j]] if h1 && h2 { return c1 < c2 } if h1 || h2 { return h1 } return arr1[i] < arr1[j] }) return arr1 }