给你一个下标从 0 开始的整数数组 mapping ,它表示一个十进制数的映射规则,mapping[i] = j 表示这个规则下将数位 i 映射为数位 j 。

一个整数 映射后的值 为将原数字每一个数位 i (0 <= i <= 9)映射为 mapping[i] 。

另外给你一个整数数组 nums ,请你将数组 nums 中每个数按照它们映射后对应数字非递减顺序排序后返回。

注意:

  • 如果两个数字映射后对应的数字大小相同,则将它们按照输入中的 相对顺序 排序。
  • nums 中的元素只有在排序的时候需要按照映射后的值进行比较,返回的值应该是输入的元素本身。

示例 1:

输入:mapping = [8,9,4,0,2,1,3,5,7,6], nums = [991,338,38]
输出:[338,38,991]
解释:
将数字 991 按照如下规则映射:
1. mapping[9] = 6 ,所有数位 9 都会变成 6 。
2. mapping[1] = 9 ,所有数位 1 都会变成 8 。
所以,991 映射的值为 669 。
338 映射为 007 ,去掉前导 0 后得到 7 。
38 映射为 07 ,去掉前导 0 后得到 7 。
由于 338 和 38 映射后的值相同,所以它们的前后顺序保留原数组中的相对位置关系,338 在 38 的前面。
所以,排序后的数组为 [338,38,991] 。

示例 2:

输入:mapping = [0,1,2,3,4,5,6,7,8,9], nums = [789,456,123]
输出:[123,456,789]
解释:789 映射为 789 ,456 映射为 456 ,123 映射为 123 。所以排序后数组为 [123,456,789] 。

提示:

  • mapping.length == 10
  • 0 <= mapping[i] <= 9
  • mapping[i] 的值 互不相同 。
  • 1 <= nums.length <= 3 * 104
  • 0 <= nums[i] < 109

C++

class Solution {
public:static bool cmp(pair<int,int>& a, pair<int,int>& b) {if(a.first==b.first) {return a.second<b.second;}return a.first<b.first;}vector<int> sortJumbled(vector<int>& mapping, vector<int>& nums) {vector<pair<int,int>> tmp;int n=nums.size();for(int i=0;i<n;i++) {int num=0;string s=to_string(nums[i]);int m=s.size();string ans;for(int k=0;k<m;k++) {ans+=mapping[s[k]-'0']+'0';}int idx=0;for(int k=0;k<ans.size();k++) {if(ans[k]!='0') {idx=k;break;}}ans=ans.substr(idx);tmp.push_back(make_pair(atoi(ans.c_str()),i));}sort(tmp.begin(),tmp.end(),cmp);vector<int> res;for(auto it:tmp) {res.push_back(nums[it.second]);}return res;}
};

leetcode 将杂乱无章的数字排序相关推荐

  1. LeetCode 2191. 将杂乱无章的数字排序(自定义排序)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个下标从 0 开始的整数数组 mapping ,它表示一个十进制数的映射规则,mapping[i] = j 表示这个规则下将数位 i 映射为数位 j ...

  2. 将杂乱无章的数字排序

    题目 给你一个下标从 0 开始的整数数组 mapping ,它表示一个十进制数的映射规则,mapping[i] = j 表示这个规则下将数位 i 映射为数位 j . 一个整数 映射后的值 为将原数字每 ...

  3. mysql将字符串字段转为数字排序或比大小

    SELECT * FROM Student WHERE 1 = 1 ORDER BY -ID DESC ; SELECT * FROM Student WHERE 1 = 1 ORDER BY (ID ...

  4. BitSet 数字排序

    2019独角兽企业重金招聘Python工程师标准>>> BitSet 数字排序 博客分类: java package tree2; import java.util.BitSet;p ...

  5. 杂记(1)java读取char类型2. 大小写字母的转换3. 字符串的拼接4. 一串数字排序

    1. java读取char类型 应为java中没有nextchar();函数,所以只能先读取一行,即 Sting a=sc.nextline(); char need=a.charAt(0);//取字 ...

  6. Mysql字符串截取 mysql将字符串字段转为数字排序或比大小

    SELECT * FROM Student WHERE 1 = 1 ORDER BY -ID DESC ; SELECT * FROM Student WHERE 1 = 1 ORDER BY (ID ...

  7. 生活中c语言排序案例,C语言之数字排序-基于冒泡排序法的一些案例(对未知数量的数字进行排序)...

    C语言之数字排序 在学习C语言的时候遇到了几个比较基础的排序问题,又结合了之前的处理方法.觉得在这个需要再系统地进行复习一下. 当我们在初学C语言的时候,我们都会结合三个数字的排序来理解计算机处理问题 ...

  8. 基于Hadoop 2.6.0运行数字排序的计算

    上个博客写了Hadoop2.6.0的环境部署,下面写一个简单的基于数字排序的小程序,真正实现分布式的计算,原理就是对多个文件中的数字进行排序,每个文件中每个数字占一行,排序原理是按行读取后分块进行排序 ...

  9. CCF201503-2 数字排序

    问题描述: 试题编号: 201503-2 试题名称: 数字排序 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺 ...

最新文章

  1. 微信公众号开发之准备工作
  2. idea 设置springboot 热部署
  3. Express踩坑系列之上传文件
  4. 如何实现android和服务器长连接呢?推送消息的原理
  5. switch日版有中文吗_任天堂switch国行和日版的区别
  6. elasticsearch 常用命令
  7. 小师妹学JavaIO之:NIO中Channel的妙用
  8. 华为交换机端口隔离配置
  9. 回复邮件时如何不要邮件头_如何为阅读,点击和回复率达到100%的CEO设计一封冷邮件...
  10. 广工android嵌入式系统试卷_嵌入式系统考试试题A及答案
  11. java输入年月输出日历_12月营销热点日历 | 2020年创意冲刺倒计时!
  12. pandas数据归一化方法
  13. 计算机组成与结构 第四版pdf,计算机组成与体系结构(原书第4版)
  14. Qt程序无响应 原因总结
  15. 怎么购买企业邮箱,企业邮箱有什么好处?
  16. Onetab快速删除所有历史网页
  17. flutter - 强制横屏/竖屏
  18. 对计算机的认识与感想
  19. 使用字节流和字符流向浏览器输出数据
  20. Java + lua = 王炸!!

热门文章

  1. 2. Hadoop的安装(这你都没装好,我就服了)
  2. Struts2通配符映射/Struts action name=/*/* method={2} class=com.jxc.action.{1}Action result
  3. stackoverflow愚人节彩蛋效果
  4. 小程序开发API之生物认证(指纹)
  5. 代理方式部署NER标注平台doccano
  6. Delphi写游戏外挂
  7. png转jpg背景颜色改变的问题
  8. 凭什么都是Java开发三年,而他能进大厂薪资是“我”2倍?
  9. 使用RTOS系统如何选取大容量存储芯片NAND FLASH
  10. Python爬取网易云音乐歌单名以及歌单标签