কম্পিউটার টিউটোরিয়াল

পাইথনে দুটি সংখ্যা যোগ করা (Add Two Numbers)

ধরা যাক দুটি নন-এম্পটি লিঙ্কড লিস্ট দেওয়া আছে। এই দুটি লিস্ট দুটি নন-নেগেটিভ ইন্টিজার রিপ্রেজেন্ট করে। ডিজিটগুলো রিভার্স অর্ডারে সংরক্ষিত। প্রতিটি নোডে শুধু একটি ডিজিট থাকে। দুটি সংখ্যা যোগ করে ফলাফল লিঙ্কড লিস্ট হিসেবে রিটার্ন করতে হবে। دو সংখ্যা に লিডিং জিরো নেই (০ ছাড়া)। যেমন ১২০ + ২৩০ হলে লিঙ্কড লিস্ট হবে [0 → 2 → 1] + [0 → 3 → 2] = [0 → 5 → 3] = ৩৫০।

সমাধানের ধাপসমূহ:

  • দুটি লিস্ট l1 এবং l2 নিন। head এবং temp কে null ইনিশিয়ালাইজ করুন
  • c := 0
  • while l1 and l2 উভয়ই নন-এম্পটি
    • l1 নন-এম্পटी হলে a := 0, অন্যথায় a := l1.val
    • l2 নন-এম্পটি হলে b := 0, অন্যথায় b := l2.val
    • n := a + b + c
    • n > 9 হলে c := 1 অন্যথায় 0
    • value n mod 10 দিয়ে নতুন নোড তৈরি
    • head null হলে head := node এবং temp := node
    • অন্যথায় head.next := node, এবং head := node
    • l1 := l1-এর নেক্সট নোড (যদি থাকে)
    • l2 := l2-এর নেক্সট নোড (যদি থাকে)
  • c নন-জিরো হলে নোড := value 1 দিয়ে নতুন নোড, head.next := node
  • temp রিটার্ন করুন

উদাহরণ (পাইথন)

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]
  1. দুই সংখ্যার কমন ডিভাইজার বের করার পাইথন প্রোগ্রাম

  2. পাইথনে দুটি বড় সংখ্যা যোগ করা

  3. পাইথনে বাইনারি সংখ্যা যোগ করার প্রোগ্রাম

  4. পাইথনে দুটি ম্যাট্রিক্স যোগ করা