本文共 1192 字,大约阅读时间需要 3 分钟。
题目给出了两个数组arr1和arr2,要求对arr1进行排序,使其元素的相对顺序与arr2中的元素相对顺序一致。未在arr2中出现过的元素需要按照升序放在arr1的末尾。
#include#include using namespace std;vector relativeSortArray(vector & arr1, vector & arr2) { // 对arr1进行排序 sort(arr1.begin(), arr1.end()); vector res; int cnt = 0; // 遍历arr2中的每一个元素 for (int i = 0; i < arr2.size(); ++i) { // 在arr1中找到对应的元素 for (int j = 0; j < arr1.size(); ++j) { if (arr1[j] == arr2[i]) { res.push_back(arr1[j]); arr1[j] = -1; // 标记已处理 break; } } } // 处理未在arr2中出现的元素 for (int i = 0; i < arr1.size(); ++i) { if (arr1[i] != -1) { res.push_back(arr1[i]); } } return res;}
输入: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]
sort函数对arr1进行升序排序。该方法确保了arr1的元素相对顺序与arr2中的顺序一致,同时也处理了未在arr2中出现的元素。
转载地址:http://kdgfk.baihongyu.com/