สมมติว่าเรามีรายการที่เรียงลำดับสองรายการ 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] แล้ว
- แทรก lst1[j] ที่ส่วนท้ายของ x
- j:=j+1
- มิฉะนั้นเมื่อ lst0[i]
- แทรก lst0[i] ที่ส่วนท้ายของ x
- i:=i+1
- ถ้า lst0[i]> lst1[j] แล้ว
- มิฉะนั้น
- แทรก lst0[i] ที่ส่วนท้ายของ x
- แทรก lst1[j] ที่ส่วนท้ายของ x
- i:=i+1, j:=j+1
มาดูการใช้งานกันให้เกิดความเข้าใจกันมากขึ้น
ตัวอย่าง
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=j+1 elif(lst0[i]<lst1[j]): x.append(lst0[i]) i=i+1 else: x.append(lst0[i]) x.append(lst1[j]) i=i+1 j=j+1 while(i<len(lst0)): x.append(lst0[i]) i=i+1 while(j<len(lst1)): x.append(lst1[j]) 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]