题目
思路
基数排序
实现
class Solution {
public:
vector<int> smallestTrimmedNumbers(vector<string>& nums, vector<vector<int>>& queries) {
int len = nums.size();
int str_len = nums[0].size();
vector<vector<int>> vec(str_len + 1);
for (int i = 0; i < len; ++i)
vec[0].emplace_back(i);
for (int i = 1; i <= str_len; ++i) {
vector<vector<int>> B(10);
for (int index : vec[i - 1])
B[nums[index][str_len - i] - '0'].emplace_back(index);
for (int j = 0; j < 10; ++j) {
for (int in : B[j])
vec[i].emplace_back(in);
}
}
vector<int> ret;
for (vector<int> query : queries)
ret.emplace_back(vec[query[1]][query[0] - 1]);
return ret;
}
};