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