leetcode 5217 将杂乱无章的数字排序

97 阅读1分钟

leetcode 5217 将杂乱无章的数字排序

思路

  1. 按照 pair<int,int> 存入 vector,前者是转换值,后者是下标
  2. 排序;
  3. 把下标推入答案;

题解:

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;
    }
  
};