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

পাইথনে টার্গেট ছোট সবচেয়ে বড় জোড়া যোগফল বের করা

একটি নম্বর লিস্ট nums এবং টার্গেট ভ্যালু দেওয়া আছে। target-1 বা তার চেয়ে ছোট সবচেয়ে বড় জোড়া যোগফল বের করুন।

ইনপুট উদাহরণ

nums = [8, 3, 4, 9, 2]
target = 8

আউটপুট: 7 (4+3=7, যা ৮-এর চেয়ে ছোট সবচেয়ে বড় যোগফল)

অ্যালগরিদম

  1. লিস্ট সর্ট করুন।
  2. টু-পয়েন্টার: p1=0 (শুরু), p2=n-1 (শেষ)।
  3. যদি nums[p1]+nums[p2] < target: ম্যাক্স আপডেট করুন, p1++।
  4. অন্যথায়: p2--।

পাইথন কোড

import math

def solve(nums, target):
    nums.sort()
    p1 = 0
    p2 = len(nums) - 1
    m = -math.inf
    while p1 < p2:
        if nums[p1] + nums[p2] < target:
            m = max(m, nums[p1] + nums[p2])
            p1 += 1
        else:
            p2 -= 1
    return m

# টেস্ট
print(solve([8, 3, 4, 9, 2], 8))  # 7

ব্যাখ্যা

সর্টেড অ্যারেতে টু-পয়েন্টার দিয়ে target-এর নিচে সবচেয়ে বড় যোগফল খুঁজে বের করা। সময় জটিলতা O(n log n) (সর্টিং)।

  1. পাইথনে লিস্টে যেকোনো দুটি সংখ্যার যোগফল k কিনা যাচাই করার প্রোগ্রাম

  2. পাইথনে Two Sum Less Than K সমস্যা সমাধান

  3. পাইথন প্রোগ্রামে অ্যারের যোগফল বের করা

  4. পাইথনে অ্যারের যোগফল বের করা