题目:LeetCode - 1122. Relative Sort Array
解题思路:
首先将arr1
中不在arr2
的元素单独存储在数组v2,arr1
中在arr2
也存在的元素存储在数组v1,然后对数组v2可简单排序,对v1排序方法是,遍历arr2
并以此从v1中取元素,即可保证v1中元素的顺序与arr2
一致。
代码:
class Solution {
public:
vector<int> relativeSortArray(vector<int>& arr1, vector<int>& arr2) {
bool a[1010];
vector <int> v1, v2;
fill(a,a+1010,false);
for (int i = 0; i < arr2.size(); i++) a[arr2[i]] = true;
for (int i = 0; i < arr1.size(); i++)
if (a[arr1[i]]) v1.push_back(arr1[i]);
else v2.push_back(arr1[i]);
sort(v2.begin(), v2.end());
vector <int> v3;
for(int i = 0; i < arr2.size(); i++){
for(int j = 0; j < v1.size(); j++) {
if(v1[j] == arr2[i]) v3.push_back(v1[j]);
}
}
vector <int> ret;
for (auto t : v3) ret.push_back(t);
for (auto t : v2) ret.push_back(t);
return ret;
}
};