ধরুন আমরা দুটি অ-খালি লিঙ্কযুক্ত তালিকা দিয়েছি। এই দুটি তালিকা দুটি অ নেতিবাচক পূর্ণসংখ্যার প্রতিনিধিত্ব করছে। অঙ্কগুলি বিপরীত ক্রমে সংরক্ষণ করা হয়। তাদের প্রতিটি নোডে শুধুমাত্র একটি সংখ্যা থাকে। দুটি সংখ্যা যোগ করুন এবং একটি লিঙ্ক তালিকা হিসাবে ফলাফল ফেরত. আমরা অনুমান করছি যে দুটি সংখ্যায় 0 নম্বরটি ছাড়া কোনো অগ্রণী শূন্য নেই। তাই যদি সংখ্যা 120 + 230 হয়, তাহলে লিঙ্ক করা তালিকা হবে [0 → 2 → 1] + [0 → 3 → 2] =[0 → 5 → 3] =350৷
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব
- l1 এবং l2 দুটি তালিকা নিন। শূন্য হিসাবে মাথা এবং তাপমাত্রা শুরু করুন
- c :=0
- যদিও l1 এবং l2 উভয়ই অ-খালি তালিকা
- যদি l1 খালি না হয়, তাহলে a :=0 সেট করুন, অন্যথায় a :=l1.val সেট করুন
- যদি l2 খালি না হয়, তাহলে b :=0 সেট করুন, অন্যথায় b :=l2.val সেট করুন
- n :=a + b + c
- যদি n> 9 হয়, তাহলে c :=1 অন্যথায় 0
- নোড :=n mod 10 মান সহ একটি নতুন নোড তৈরি করুন
- হেড শূন্য হলে
-
head :=নোড এবং temp :=নোড
-
- অন্যথায়
- head.next :=node, and head :=node
- l1 :=l1 এর পরবর্তী নোড, যদি l1 থাকে
- l2 :=l2 এর পরবর্তী নোড, যদি l2 থাকে
- যদি c অ-শূন্য হয়, তাহলে
- নোড :=মান 1 সহ নতুন নোড, মাথার পাশে :=নোড
- রিটার্ন টেম্প
উদাহরণ(পাইথন)
আসুন আরও ভালোভাবে বোঝার জন্য নিচের বাস্তবায়ন দেখি
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 addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: head = None temp = None c = 0 while l1 or l2: if not l1: a= 0 else: a = l1.val if not l2: b=0 else: b = l2.val n = a +b + c c = 1 if n>9 else 0 node = ListNode(n%10) if not head: head = node temp = node else: head.next = node head = node l1 = l1.next if l1 else None l2 = l2.next if l2 else None if c: node = ListNode(1) head.next = node return temp ob1 = Solution() l1 = make_list([0,2,1]) l2 = make_list([0,3,2]) print_list(ob1.addTwoNumbers(l1, l2))
ইনপুট
[0,2,1] [0,3,2]
আউটপুট
[0,5,3]