मान लीजिए कि हमारे पास दो सरणियाँ हैं 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 परिभाषित करें
- गिरफ्तारी2 में प्रत्येक तत्व i के लिए -
- जे के लिए 0 से डी की सीमा में[i] - 1
- मुझे रेस में जोड़ें
- डी[i] :=0
- जे के लिए 0 से डी की सीमा में[i] - 1
- डी में (कुंजी, मान) जोड़ी के लिए
- यदि मान 0 नहीं है, तो
- i के लिए:=0 से मान – 1
- अस्थायी में कुंजी जोड़ें
- i के लिए:=0 से मान – 1
- यदि मान 0 नहीं है, तो
- अस्थायी सरणी को क्रमबद्ध करें, रेस के अंत में अस्थायी जोड़ें, और 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]