ধরুন আমাদের কাছে সংখ্যা নামক সংখ্যার একটি তালিকা রয়েছে এবং একটি লক্ষ্য মানও রয়েছে, আমাদের সংখ্যার বৃহত্তম জোড়া সংখ্যার যোগফল খুঁজে বের করতে হবে যার যোগফল সর্বাধিক (লক্ষ্য-1)।
সুতরাং, যদি ইনপুটটি nums =[8, 3, 4, 9, 2] টার্গেট =8 এর মত হয়, তাহলে আউটপুট হবে 7, কারণ 8 থেকে কম সংখ্যার বৃহত্তম জোড়ার যোগফল হল 4 + 3 =7।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- তালিকা সংখ্যা সাজান
- p1 :=0
- p2 :=সংখ্যার আকার - 1
- m :=-inf
- যখন p1
- যদি nums[p1] + nums[p2]
- m :=সর্বাধিক m এবং (nums[p1] + nums[p2])
- p1 :=p1 + 1
- যদি nums[p1] + nums[p2]
- p2 :=p2 - 1
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
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 nums = [8, 3, 4, 9, 2] target = 8 print(solve(nums, target))
ইনপুট
[8, 3, 4, 9, 2], 8
আউটপুট
7