मान लीजिए हमारे पास दो क्रमबद्ध सूचियां A और B हैं। हमें उन्हें मर्ज करना है और केवल एक क्रमबद्ध सूची C बनानी है। सूचियों का आकार भिन्न हो सकता है।
उदाहरण के लिए, मान लीजिए A = [1,2,4,7] और B = [1,3,4,5,6,8], तो मर्ज की गई सूची C होगी [1,1,2,3,4,4,5,6,7,8]
हम इसे रिकर्सन का उपयोग करके हल करेंगे। फंक्शन निम्नानुसार काम करेगा:
- x := एक नई सूची
- i := 0, j := 0
- जब तक i < lst0 का आकार और j < lst1 का आकार, करें:
- यदि lst0[i] > lst1[j], तो x के अंत में lst1[j] डालें, j := j+1
- अन्यथा यदि lst0[i] < lst1[j], तो x के अंत में lst0[i] डालें, i := i+1
- अन्यथा, x के अंत में lst0[i] और lst1[j] डालें, i := i+1, j := j+1
- जब तक i < len(lst0), करें: x के अंत में lst0[i] डालें, i := i+1
- जब तक j < len(lst1), करें: x के अंत में lst1[j] डालें, j := j+1
- x वापस करें
उदाहरण
class Solution:
def solve(self, lst0, lst1):
x = []
i = 0
j = 0
while i < len(lst0) and j < len(lst1):
if lst0[i] > lst1[j]:
x.append(lst1[j])
j += 1
elif lst0[i] < lst1[j]:
x.append(lst0[i])
i += 1
else:
x.append(lst0[i])
x.append(lst1[j])
i += 1
j += 1
while i < len(lst0):
x.append(lst0[i])
i += 1
while j < len(lst1):
x.append(lst1[j])
j += 1
return x
ob = Solution()
print(ob.solve([1,2,4,7], [1,3,4,5,6,8]))
इनपुट
[1,2,4,7], [1,3,4,5,6,8]
आउटपुट
[1, 1, 2, 3, 4, 4, 5, 6, 7, 8]