ধরুন আমাদের দুটি এককভাবে লিঙ্কযুক্ত তালিকা L1 এবং L2 আছে, প্রত্যেকটি প্রথমে কমপক্ষে উল্লেখযোগ্য সংখ্যা সহ একটি সংখ্যার প্রতিনিধিত্ব করে, আমাদের যোগ করা লিঙ্কযুক্ত তালিকাটি খুঁজে বের করতে হবে৷
সুতরাং, যদি ইনপুট L1 =[5,6,4] L2 =[2,4,8] এর মত হয়, তাহলে আউটপুট হবে [7, 0, 3, 1, ]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:
-
বহন করুন :=0
-
res :=মান 0
সহ একটি নতুন নোড -
curr :=res
-
যখন L1 খালি নয় বা L2 খালি নয় বা বহন শূন্য নয়, কর
-
l0_val :=L1 এর মান যদি L1 খালি না হয় অন্যথায় 0
-
l1_val :=L2 এর মান যদি L2 খালি না হয় অন্যথায় 0
-
যোগফল_ :=l0_val + l1_val
-
বহন :=(সমষ্টি_ + বহন) / 10
এর ভাগফল -
add_val :=(sum_ + বহন) / 10
এর অবশিষ্টাংশ -
curr.next :=মান add_val
সহ একটি নতুন নোড -
curr :=curr এর পরবর্তী
-
L1 :=L1 এর পরের যদি L1 খালি না হয় অন্যথায় শূন্য
-
L2 :=L2 এর পরের যদি L2 খালি না হয় অন্যথায় শূন্য
-
-
curr এর পরবর্তী :=শূন্য
-
রিটার্ন এর পরবর্তী
আরও ভালভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি:
উদাহরণ
class ListNode:
def __init__(self, data, next = None):
self.val = data
self.next = next
def make_list(elements):
head = ListNode(elements[0])
for element in elements[1:]:
ptr = head
while ptr.next:
ptr = ptr.next
ptr.next = ListNode(element)
return head
def print_list(head):
ptr = head
print('[', end = "")
while ptr:
print(ptr.val, end = ", ")
ptr = ptr.next
print(']')
class Solution:
def solve(self, L1, L2):
carry = 0
res = ListNode(0)
curr = res
while L1 or L2 or carry:
l0_val = L1.val if L1 else 0
l1_val = L2.val if L2 else 0
sum_ = l0_val + l1_val
carry, add_val = divmod(sum_ + carry, 10)
curr.next = ListNode(add_val)
curr = curr.next
L1 = L1.next if L1 else None
L2 = L2.next if L2 else None
curr.next = None
return res.next
ob = Solution()
L1 = make_list([5,6,4])
L2 = make_list([2,4,8])
print_list(ob.solve(L1, L2)) ইনপুট
[5,6,4], [2,4,8]
আউটপুট
[7, 0, 3, 1, ]