利用哈希表来保存arr2中的排序索引
利用双指针结合哈希表来区别元素是否在表中
利用指针的索引对arr1进行划分
两种排序方式:1种是arr2中的排序方式排序,第二种则是元素大小排序
class Solution(object):
def relativeSortArray(self, arr1, arr2):
"""
:type arr1: List[int]
:type arr2: List[int]
:rtype: List[int]
"""
hash_map={}
for i in range(len(arr2)):
hash_map[arr2[i]]=i
i=0
j=len(arr1)-1
while i<=j:
if hash_map.get(arr1[i]) is not None:
i+=1
continue
else:
arr1[i],arr1[j]=arr1[j],arr1[i]
j-=1
data1=arr1[:(j+1)]
data1.sort(key=lambda x:hash_map[x])
data2=arr1[(1+j):]
data2.sort()
return data1+data2
需要注意的是循环结束时的判断关系以及切片时的索引关系