leetcode简单1122数组的相对排序
Posted qq_40707462
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode简单1122数组的相对排序相关的知识,希望对你有一定的参考价值。
思路:非比较排序,可以计数排序,即特殊的桶排序
先计算arr1里每个数出现的次数,再按照arr2的顺序挨个把这些数填到res里,最后处理剩下的数
class Solution:
def relativeSortArray(self, arr1: List[int], arr2: List[int]) -> List[int]:
res=[0]*len(arr1)
maxnum=0
for n in arr1:
maxnum=max(maxnum,n)
fre=[0]*(maxnum+1)
for n in arr1:
fre[n]+=1
index=0
for n in arr2:
for x in range(fre[n]):
res[index]=n
index+=1
fre[n]=0
for i in range(maxnum+1):
for j in range(fre[i]):
res[index]=i
index+=1
return res
class Solution {
public int[] relativeSortArray(int[] arr1, int[] arr2) {
int[]res=new int[arr1.length];
//找出arr1里的最大值
int maxnum=0;
for(int x : arr1){
maxnum=Math.max(maxnum,x);
}
//arr1每个数i出现次数
int[] fre=new int[maxnum+1];
for(int x:arr1){
fre[x]++;
}
//按照arr2的顺序依次填入res
int index=0;
for(int x:arr2){
for(int i=0;i<fre[x];i++){
res[index++]=x;
}
fre[x]=0;
}
//寻找arr1里剩下的
for(int x=0;x<=maxnum;x++){
for(int i=0;i<fre[x];i++){
res[index++]=x;
}
}
return res;
}
}
以上是关于leetcode简单1122数组的相对排序的主要内容,如果未能解决你的问题,请参考以下文章
[LeetCode] 1122. Relative Sort Array 数组的相对排序
LeetCode 1122. Relative Sort Array (数组的相对排序)