leetcode 将杂乱无章的数字排序
给你一个下标从 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 将杂乱无章的数字排序相关推荐
- LeetCode 2191. 将杂乱无章的数字排序(自定义排序)
文章目录 1. 题目 2. 解题 1. 题目 给你一个下标从 0 开始的整数数组 mapping ,它表示一个十进制数的映射规则,mapping[i] = j 表示这个规则下将数位 i 映射为数位 j ...
- 将杂乱无章的数字排序
题目 给你一个下标从 0 开始的整数数组 mapping ,它表示一个十进制数的映射规则,mapping[i] = j 表示这个规则下将数位 i 映射为数位 j . 一个整数 映射后的值 为将原数字每 ...
- mysql将字符串字段转为数字排序或比大小
SELECT * FROM Student WHERE 1 = 1 ORDER BY -ID DESC ; SELECT * FROM Student WHERE 1 = 1 ORDER BY (ID ...
- BitSet 数字排序
2019独角兽企业重金招聘Python工程师标准>>> BitSet 数字排序 博客分类: java package tree2; import java.util.BitSet;p ...
- 杂记(1)java读取char类型2. 大小写字母的转换3. 字符串的拼接4. 一串数字排序
1. java读取char类型 应为java中没有nextchar();函数,所以只能先读取一行,即 Sting a=sc.nextline(); char need=a.charAt(0);//取字 ...
- Mysql字符串截取 mysql将字符串字段转为数字排序或比大小
SELECT * FROM Student WHERE 1 = 1 ORDER BY -ID DESC ; SELECT * FROM Student WHERE 1 = 1 ORDER BY (ID ...
- 生活中c语言排序案例,C语言之数字排序-基于冒泡排序法的一些案例(对未知数量的数字进行排序)...
C语言之数字排序 在学习C语言的时候遇到了几个比较基础的排序问题,又结合了之前的处理方法.觉得在这个需要再系统地进行复习一下. 当我们在初学C语言的时候,我们都会结合三个数字的排序来理解计算机处理问题 ...
- 基于Hadoop 2.6.0运行数字排序的计算
上个博客写了Hadoop2.6.0的环境部署,下面写一个简单的基于数字排序的小程序,真正实现分布式的计算,原理就是对多个文件中的数字进行排序,每个文件中每个数字占一行,排序原理是按行读取后分块进行排序 ...
- CCF201503-2 数字排序
问题描述: 试题编号: 201503-2 试题名称: 数字排序 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺 ...
最新文章
- 微信公众号开发之准备工作
- idea 设置springboot 热部署
- Express踩坑系列之上传文件
- 如何实现android和服务器长连接呢?推送消息的原理
- switch日版有中文吗_任天堂switch国行和日版的区别
- elasticsearch 常用命令
- 小师妹学JavaIO之:NIO中Channel的妙用
- 华为交换机端口隔离配置
- 回复邮件时如何不要邮件头_如何为阅读,点击和回复率达到100%的CEO设计一封冷邮件...
- 广工android嵌入式系统试卷_嵌入式系统考试试题A及答案
- java输入年月输出日历_12月营销热点日历 | 2020年创意冲刺倒计时!
- pandas数据归一化方法
- 计算机组成与结构 第四版pdf,计算机组成与体系结构(原书第4版)
- Qt程序无响应 原因总结
- 怎么购买企业邮箱,企业邮箱有什么好处?
- Onetab快速删除所有历史网页
- flutter - 强制横屏/竖屏
- 对计算机的认识与感想
- 使用字节流和字符流向浏览器输出数据
- Java + lua = 王炸!!
热门文章
- 2. Hadoop的安装(这你都没装好,我就服了)
- Struts2通配符映射/Struts action name=/*/* method={2} class=com.jxc.action.{1}Action 		 result
- stackoverflow愚人节彩蛋效果
- 小程序开发API之生物认证(指纹)
- 代理方式部署NER标注平台doccano
- Delphi写游戏外挂
- png转jpg背景颜色改变的问题
- 凭什么都是Java开发三年,而他能进大厂薪资是“我”2倍?
- 使用RTOS系统如何选取大容量存储芯片NAND FLASH
- Python爬取网易云音乐歌单名以及歌单标签