Python中的相对排序数组

假设我们有两个数组arr1和arr2,arr2的元素是唯一的,并且arr2中的所有元素也都存在于arr1中。我们必须对arr1的元素进行排序,以使arr1中项目的相对顺序与arr2中的项目相同。如果arr2中不存在某些元素,则应将它们以升序放置在arr1的末尾。因此,如果arr1类似于[2,3,1,3,2,4,6,7,9,2,19],而arr2类似于[2,1,4,3,9,6],则结果将是[2,2,2,1,4,3,3,9,6,7,19]

为了解决这个问题,我们将遵循以下步骤-

  • 创建一个名为D的映射,并存储arr1中存在的元素的频率

  • 定义两个数组res和temp

  • 对于arr2中的每个元素i-

    • 将我附加到res

    • 对于j,范围从0到D [i] – 1

    • D [i]:= 0

    • D中的(键,值)对

      • 对于我:= 0至值– 1

      • 将键添加到临时

      • 如果值不为0,则

      • 排序临时数组,在res的末尾添加temp,然后返回res

      示例

      让我们看下面的实现以更好地理解-

      class Solution(object):

         def relativeSortArray(self, arr1, arr2):

            d = {}

            for i in arr1:

               if i not in d:

                  d[i]= 1

               else:

                  d[i]+=1

            res = []

            temp = []

            for i in arr2:

               for j in range(d[i]):

                  res.append(i)

               d[i] =0

            for k,v in d.items():

               if v:

                  for i in range(v):

                     temp.append(k)

            temp.sort()

            res.extend(temp)

            return res

      ob1 = Solution()print(ob1.relativeSortArray([2,3,1,4,2,4,6,7,9,2,19] ,[2,1,4,3,9,6]))

      输入值

      [2,3,1,3,2,4,6,7,9,2,19]

      [2,1,4,3,9,6]

      输出结果

      [2, 2, 2, 1, 4, 4, 3, 9, 6, 7, 19]



      以上是 Python中的相对排序数组 的全部内容, 来源链接: utcz.com/z/335019.html

      回到顶部