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; } -- ※ 發信站: 批踢踢實業坊(ptt-web.org.tw), 來自: 36.227.192.85 (臺灣) ※ 文章網址: https://ptt-web.org.tw/Marginalman/M.1721785210.A.C75
sustainer123: 幹 太快了吧 07/24 09:42
digua: 大師 07/24 09:42