网站点击换图片的效果怎么做,wordpress什么插件好,网站策划与制作,如何使用win2008iis建设网站文章目录1. 题目2. 解题1. 题目
给你一个下标从 0 开始的整数数组 mapping #xff0c;它表示一个十进制数的映射规则#xff0c;mapping[i] j 表示这个规则下将数位 i 映射为数位 j 。
一个整数 映射后的值 为将原数字每一个数位 i #xff08;0 i 9#xff…
文章目录1. 题目2. 解题1. 题目
给你一个下标从 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 * 10^4
0 nums[i] 10^9来源力扣LeetCode 链接https://leetcode-cn.com/problems/sort-the-jumbled-numbers 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 2. 解题
求出映射后的数字和映射之前的 序号先按映射后的数字排序一样的话按照之前的序号
class Solution {
public:vectorint sortJumbled(vectorint mapping, vectorint nums) {unordered_mapint,int m;unordered_mapint, int idx;for(int i 0; i nums.size(); i){int num nums[i], ans 0, p 1;if(num0)ans mapping[0];while(num){ans p*mapping[num%10];p * 10;num / 10;}m[nums[i]] ans;idx[nums[i]] i;}sort(nums.begin(), nums.end(),[](auto a, auto b){if(m[a] ! m[b])return m[a] m[b];return idx[a] idx[b];});return nums;}
};1072 ms 118.4 MB C 我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号Michael阿明一起加油、一起学习进步