สมมติว่าเรามีรายการที่เชื่อมโยงสองรายการ l1 และ l2 เราต้องส่งคืนรายการที่เชื่อมโยงหนึ่งรายการโดยแทรกองค์ประกอบระหว่างสองรายการนี้โดยขึ้นต้นด้วย l1 หากมีโหนดที่เหลือในรายการที่เชื่อมโยง โหนดเหล่านั้นควรถูกผนวกเข้ากับรายการ
ดังนั้น หากอินพุตเป็น l1 =[5,4,6,3,4,7] l2 =[8,6,9] ผลลัพธ์จะเป็น [5,8,4,6,6,9, 3,4,7]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
ตอบ :=l1
-
ในขณะที่ l2 ไม่เป็นโมฆะให้ทำ
-
ถ้า ans ไม่เป็นโมฆะ
-
ถ้า next of ans ไม่เป็นโมฆะ
-
newnode :=รายการโหนดใหม่ที่มีค่า l2 เท่ากัน
-
ถัดไปของ newnode :=ถัดไปของ ans
-
ถัดไป :=newnode
-
ans :=ถัดไปของโหนดใหม่
-
l2 :=ถัดไปของ l2
-
-
มิฉะนั้น
-
ถัดไป :=l2
-
ออกจากวง
-
-
มิฉะนั้น
-
กลับ l2
-
-
-
กลับ l1
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
Source Code (Python):class ListNode:def __init__(self, data, next =None):self.val =data self.next =nextdef make_list(elements):head =ListNode(elements[0]) สำหรับองค์ประกอบ ในองค์ประกอบ[1:]:ptr =head while ptr.next:ptr =ptr.next ptr.next =ListNode(element) return headdef print_list(head):ptr =head print('[', end ="") while ptr:print(ptr.val, end =", ") ptr =ptr.nextprint(']')class Solution:def dissolve(self, l1, l2):ans =l1 while l2:if ans:if ans.next !=ไม่มี:newnode =ListNode (l2.val, None) newnode.next =ans.next ans.next =newnode ans =newnode.next l2 =l2.next อื่น:ans.next =l2 break อื่น:return l2 return l1ob =Solution()l1 =make_list([5,4,6,3,4,7])l2 =make_list([8,6,9])res =ob.solve(l1,l2)print_list(res)ก่อน>อินพุต
[5,4,6,3,4,7],[8,6,9]ผลลัพธ์
[5, 8, 4, 6, 6, 9, 3, 4, 7, ]