其他分享
首页 > 其他分享> > LeetCode #1122. Relative Sort Array

LeetCode #1122. Relative Sort Array

作者:互联网

题目

1122. Relative Sort Array


解题方法

设置一个字典初始化键值对为arr2中的所有元素和0,遍历arr1,计数每个字典中元素出现的次数,如果不在字典中就把它加进去,再把这个数加到arr3中。对arr3排序,然后分别遍历arr2和arr3中所有元素,按照字典中对应的出现频数向返回值数组rat中写数字即可。
时间复杂度:不知道,挺快的,28 ms, faster than 97.01%,根据arr3的长度而变化
空间复杂度:O(n),临时数组arr3、计数字典dic,还有返回值rat,最长为arr1的长度


代码

class Solution:
    def relativeSortArray(self, arr1: List[int], arr2: List[int]) -> List[int]:
        dic = {}
        for i in arr2:
            dic[i] = 0
        
        arr3 = []
        for i in arr1:
            if i in dic:
                dic[i] += 1
            else:
                dic[i] = 1
                arr3.append(i)
        
        arr3.sort()
        
        rat = []
        for i in arr2:
            count = dic[i]
            while count:
                rat.append(i)
                count -= 1
        
        for i in arr3:
            count = dic[i]
            while count:
                rat.append(i)
                count -= 1
        
        return rat

标签:Sort,count,1122,dic,Relative,rat,arr3,arr2,字典
来源: https://www.cnblogs.com/RatsCommander/p/14029261.html