题目来源:
leetcode题目,网址:LCR 075. 数组的相对排序 - 力扣(LeetCode)
解题思路:
先将 arr1 中在 arr2 中出现过的元素按顺序排序,然后将剩余元素按升序排序。
解题代码:
class Solution {public int[] relativeSortArray(int[] arr1, int[] arr2) {int thisPos=0;for(int j=0;j<arr2.length;j++){//i 指向arr1,j指向 arr2for(int k=thisPos;k<arr1.length;k++){if(arr1[k]==arr2[j]){arr1[k]=arr1[thisPos];arr1[thisPos]=arr2[j];thisPos++;}}}for(int i=thisPos;i<arr1.length;i++){for(int j=arr1.length-1;j>i;j--){if(arr1[j]<arr1[j-1]){int temp=arr1[j];arr1[j]=arr1[j-1];arr1[j-1]=temp;}}}return arr1;}
}
总结:
官方题解给出了两种解法。第一种是重写比较器自定义排序。第二种是计数排序。