文章目录
更多LeetCode题解
Given two arrays arr1
and arr2
, the elements of arr2
are distinct, and all elements in arr2
are also in arr1
.
Sort the elements of arr1
such that the relative ordering of items in arr1
are the same as in arr2
. Elements that don’t appear in arr2
should be placed at the end of arr1
in ascending order.
Example 1:
Input: arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9,6]
Output: [2,2,2,1,4,3,3,9,6,7,19]
Constraints:
arr1.length, arr2.length <= 1000
0<= arr1[i], arr2[i] <= 1000
- Each
arr2[i]
is distinct. - Each
arr2[i]
is inarr1
.
My Solution
- 按
arr2
的顺序将arr1
中与arr2
重复的元素插入res1
- 将
arr1
中arr2
没有的元素插入res2
并排序 - 合并
res1
和res2
class Solution {
public:
vector<int> relativeSortArray(vector<int>& arr1, vector<int>& arr2) {
vector<int> res1;
vector<int> res2;
for (int i = 0; i < arr2.size(); i++) {
for (int j = 0; j < arr1.size(); j++) {
if (arr2[i] == arr1[j]) {
res1.push_back(arr2[i]);
}
}
}
for (int i = 0; i < arr1.size(); i++) {
if (find(arr2.begin(), arr2.end(), arr1[i]) == arr2.end()) {
res2.push_back(arr1[i]);
}
}
sort(res2.begin(), res2.end());
res1.insert(res1.end(), res2.begin(), res2.end());
return res1;
}
};