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:
- 對於j從0到D[i]-1
- 將i新增到res中。
- D[i] := 0
- 對於j從0到D[i]-1
- 對於D中的(鍵,值)對:
- 如果值不為0,則:
- 對於i := 0到value – 1
- 將鍵新增到temp中。
- 對於i := 0到value – 1
- 如果值不為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]
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP