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

পাইথনে দুটি নম্বরের জোড়ার যোগফলের পার্থক্য ন্যূনতম করা প্রোগ্রাম


মান লক্ষ্য করুন আমাদের কাছে একটি সংখ্যার তালিকা nums আছে এবং আমরা সেটি থেকে দুটি জোড়া সংখ্যা বেছে নিতে চাই যাতে সেই দুটি জোড়ার যোগফলের परम পার্থক্য ন্যূনতম হয়।

উদাহরণস্বরূপ, যদি ইনপুট হয় nums = [3, 4, 5, 10, 7], তবে আউটপুট হবে 1, কারণ আমরা জোড়াগুলো বেছে নিতে পারি (3+7) - (4+5) = 1।

সমাধানের ধাপসমূহ:
  • distances := একটি নতুন তালিকা
  • i কে ০ থেকে len(nums)-2 পর্যন্ত লুপ চালান:
    • j কে i+1 থেকে len(nums)-1 পর্যন্ত লুপ চালান:
      • [abs(nums[i]-nums[j]), i, j] কে distances-র শেষে ঢুকান
  • distances তালিকাটি সর্ট করুন।
  • ans := 1e9
  • i কে ০ থেকে len(distances)-2 পর্যন্ত লুপ চালান:
    • [dist, i1, i2] := distances[i]
    • j := i + 1
    • [dist2, i3, i4] := distances[j]
    • j < len(distances) এবং {i1, i2, i3, i4} এর এলিমেন্টগুলো ইউনিক না হলে লুপ চালান:
      • [dist2, i3, i4] := distances[j]
      • j := j + 1
    • যদি {i1, i2, i3, i4} এর এলিমেন্টগুলো ইউনিক হয়, তবে:
      • ans := min(ans, dist2 - dist)
  • ans রিটার্ন করুন।
উদাহরণ কোড
class Solution:
    def solve(self, nums):
        distances = []
        for i in range(len(nums) - 1):
            for j in range(i + 1, len(nums)):
                distances.append((abs(nums[i] - nums[j]), i, j))
        distances.sort()
        ans = 1e9
        for i in range(len(distances) - 1):
            dist, i1, i2 = distances[i]
            j = i + 1
            dist2, i3, i4 = distances[j]
            while j < len(distances) and len({i1, i2, i3, i4}) != 4:
                dist2, i3, i4 = distances[j]
                j += 1
            if len({i1, i2, i3, i4}) == 4:
                ans = min(ans, dist2 - dist)
        return ans

ob = Solution()
nums = [3, 4, 5, 10, 7]
print(ob.solve(nums))
ইনপুট
[3, 4, 5, 10, 7]
আউটপুট
1
  1. পাইথনে বাইনারি ট্রিতে যেকোনো দুটি নোডের মধ্যে সর্বোচ্চ পথ সমষ্টি খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে প্রথম n বিজোড় সংখ্যার যোগফল খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে দুটি সংখ্যার শিফটেড টেবিলের মধ্যবর্তী ন্যূনতম পার্থক্য

  4. পাইথনে লিস্টের সব পেয়ারের অ্যাবসোলিউট ডিফারেন্সের যোগফল