leetcode 5217 将杂乱无章的数字排序
思路
- 按照 pair<int,int> 存入 vector,前者是转换值,后者是下标;
- 排序;
- 把下标推入答案;
题解:
class Solution {
public:
typedef pair<int,int> pii;
vector<int> sortJumbled(vector<int>& mapping, vector<int>& nums) {
vector<pii> vec;
for(int i = 0; i < nums.size(); i++) {
vec.push_back(pii(change(mapping, nums[i]), i));
}
sort(vec.begin(), vec.end());
vector<int> ans;
for(int i = 0; i < nums.size(); i++) {
ans.push_back(nums[vec[i].second]);
}
return ans;
}
int change(vector<int>& mapping, int x) {
if(x == 0) return mapping[0];
int res = 0;
int flag = 1;
while(x > 0) {
int a = x % 10;
res += mapping[a] * flag;
flag *= 10;
x /= 10;
}
return res;
}
};