Sort the Jumbled Numbers
给一个mapping数组, 给一个数组nums, 求按照mapping数组转化后的数字的排列nums.
这题就是存一下转化后的数字, 然后排列即可. 需要注意java里面的lambda不能比较primitive type
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
class Solution { public int[] sortJumbled(int[] mapping, int[] nums) { Integer[] nn = new Integer[nums.length]; Map<Integer, Integer> map = new HashMap<>(); for(int i = 0; i < nums.length; i++){ nn[i] = nums[i]; map.put(nums[i], map.getOrDefault(nums[i], convert(nums[i],mapping))); } Arrays.sort(nn, (a, b) -> (map.get(a) - map.get(b))); for(int i = 0; i < nums.length; i++){ nums[i] = nn[i]; } return nums; } private int convert(int n, int[] mapping){ StringBuffer sb = new StringBuffer(); if(n == 0) return mapping[0]; while(n != 0){ sb.insert(0,mapping[n % 10]); n /= 10; } return Integer.valueOf(sb.toString()); } } |