Re: [闲聊] 每日leetcode

楼主: enmeitiryous (enmeitiryous)   2024-07-24 09:40:08
2191 sort the jumped numbers
题目: 给你一个array mapping里面有0-9的数字,mapping[i]代表的意思是在之后的
数字转换中i要被转换成mapping[i],例如mapping = [8,9,4,0,2,1,3,5,7,6],则
338会被转换成007=7,991则会被转换成669,给你一个array nums回传根据
mapping转换后数字由小到大的原数字排序,如果转换后相同则依照原先相对位置排序
思路:用一个function将原数字转换成新数字,将原数字和新数字的配对塞成一个二维
array依照题目叙述定义新的sort function排序完二维array后依序回传原数字。
static int qoti(int v1,unordered_map<char,char> &kr){
string ste1=to_string(v1);
for(int i=0;i<ste1.size();++i){
ste1[i]=kr[ste1[i]];
}
return stoi(ste1);
}
static bool compareInterval( vector<int> &v1, vector<int> &v2){
if(v1[1]==v2[1]){
return(v1[1]>v2[1]);
}
else{
return (v1[1]<v2[1]);
}
}
static vector<int> sortJumbled(vector<int>& mapping, vector<int>& nums) {
unordered_map<char,char> new_rule;
for(int i=0;i<10;++i){
new_rule[char(i+48)]=char(mapping[i]+48);
}
vector<vector<int>> pre_ans;
int n=nums.size();
for(int i=0;i<n;++i){
pre_ans.push_back({nums[i],qoti(nums[i],new_rule)});
}
sort(pre_ans.begin(),pre_ans.end(),compareInterval);
vector<int> ans;
for(int i=0;i<n;++i){
ans.push_back(pre_ans[i][0]);
}
return ans;
}
作者: sustainer123 (caster)   2024-07-24 09:42:00
干 太快了吧
作者: digua (地瓜)   2024-07-24 09:42:00
大师

Links booklink

Contact Us: admin [ a t ] ucptt.com