मान लीजिए हमारे पास दो ऐरे 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) pair के लिए
- यदि 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]