ধরুন আমাদের দুটি এককভাবে লিঙ্কযুক্ত তালিকা 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, ]