1122 给你两个数组,arr1 和 arr2,
arr2 中的元素各不相同
arr2 中的每个元素都出现在 arr1 中
对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/relative-sort-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
本题:相对排序,采用了暴力法:
第一步: 在标准序列中查找待排序的序列,并将数字交换
第二步:对剩余的采用sort升序排列
class Solution {
public:
vector<int> relativeSortArray(vector<int>& arr1, vector<int>& arr2) {
vector<int> res = arr1;
int k = 0;
for (int i = 0; i < arr2.size(); i++) {
// cout << k << endl;
for (int j = k; j < res.size(); j++) {
if (res[j] == arr2[i]) {
int tmp = res[j];
res[j] = res[k];
res[k] = tmp;
k++;
}
}
}
// 末尾排序
sort(res.begin()+k, res.end());
return res;
}
};