Python 中的相对排序数组
pythonserver side programmingprogramming更新于 2026/1/4 18:52:17
假设我们有两个数组 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 −
- 对于 j 在 0 到 D[i] 范围内 – 1
- 将 i 附加到 res 中
- D[i] := 0
- 对于 j 在 0 到 D[i] 范围内 – 1
- 对于 D 中的 (key, value) 对
- 如果 value 不为 0,则
- 对于 i := 0 到 value – 1
- 将 key 添加到 temp 中
- 对于 i := 0 到 value – 1
- 如果 value 不为 0,则
- 对 temp 数组进行排序,将 temp 添加到 res 末尾,然后返回 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 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

