Relative Sort Array
简单的counting题.
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 27 28 29 |
class Solution { public static int[] relativeSortArray(int[] arr1, int[] arr2) { int[] count = new int[1001]; for(int i = 0; i < arr1.length; i++) { // count all numbers in arr1 count[arr1[i]]++; } int[] res = new int[arr1.length]; int t = 0; for(int i = 0 ; i < arr2.length; i++) { // put all numbers which appears in arr2 int j = count[arr2[i]]; int n = arr2[i]; while(j > 0) { res[t++] = n; j--; count[arr2[i]]--; } } for(int i = 0 ; i < count.length; i++) { // reminding numbers if(count[i] != 0) { int j = count[i]; while(j > 0) { res[t++] = i; j--; } } } return res; } } |