问题描述
给定两个数组,arr1
和 arr2
,
arr2
中的元素各不相同arr2
中的每个元素都出现在arr1
中
对 arr1
中的元素进行排序,使 arr1
中项的相对顺序和 arr2
中的相对顺序相同。未在 arr2
中出现过的元素需要按照升序放在 arr1
的末尾。
解答
其实就是查找对应的字符放在一起(调换位置),最后剩下的排序
class Solution {
public:
vector<int> relativeSortArray(vector<int>& arr1, vector<int>& arr2) {
int i=0,j=0;
int m=arr1.end()-arr1.begin(),n=arr2.end()-arr2.begin();
while (j<n)
{
int k=i;
while (k<m)
{
while (k<m && arr1[k]!=arr2[j])
k++;
if (k<m)
{
arr1[k]=arr1[i];
arr1[i]=arr2[j];
k++;
i++;
}
}
j++;
}
sort(arr1.begin()+i,arr1.end());
return arr1;
}
};