【LeetCode每日一题】[简单]1122. 数组的相对排序
328. 奇偶链表
算法思想:数组
题目:
java代码
class Solution {
//计数排序
public int[] relativeSortArray(int[] arr1, int[] arr2) {
int[] m = new int[1001];//用来统计arr1中arr2数值出现次数
int n1 = arr1.length;//arr1长度
int n2 = arr2.length;//arr2长度
int[] res = new int[n1];//答案
int k = 0;
for (int i = 0; i < n1; i++) {
//用来统计arr1中各个数值出现的频率
m[arr1[i]]++;
}
for (int i = 0; i < n2; i++) {
//根据arr2的顺序以及m中各数出现的频率生成返回数组的前半部分
while (m[arr2[i]] > 0) {
res[k++] = arr2[i];
m[arr2[i]]--;
}
}
for (int i = 0; i < m.length; i++) {
//将arr2中没有出现的排序加入末尾
//m从前往后遍历是有序的;直接加入即可
while (m[i] > 0) {
res[k++] = i;
m[i]--;
}
}
return res;
}
}