কম্পিউটার

পাইথনে ন্যূনতম পরম যোগফলের পার্থক্য খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের কাছে একই আকারের দুটি ধনাত্মক মানসম্পন্ন অ্যারে nums1 এবং nums2 আছে। এই দুটি অ্যারের পরম যোগফল হল |সংখ্যা1[i] - nums2[i]| প্রতিটি 0 <=i

সুতরাং, যদি ইনপুট হয় nums1 =[2,8,6], nums2 =[3,4,6], তাহলে আউটপুট হবে 3 কারণ, আমরা দুটি সম্ভাব্য সর্বোত্তম সমাধান খুঁজে পেতে পারি

  • সূচক 1-এর উপাদানটিকে সূচক 0 এ উপাদান দিয়ে প্রতিস্থাপন করুন:[2,8,6] => [2,2,6], অথবা

  • সূচক 1-এর উপাদানটিকে সূচক 2-এর উপাদান দিয়ে প্রতিস্থাপন করুন:[2,8,6] => [2,6,6]।

তাদের উভয়েরই যোগফলের পার্থক্য |2-3| + (|2-4| বা |6-4|) + |6-6| =3.

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • যদি nums1 nums2 এর মত হয়, তাহলে

    • ফেরত (0)

  • minn_diff :=-ইনফিনিটি

  • ind :=-1

  • 0 থেকে সংখ্যা 1 - 1 এর আকারের জন্য, করুন

    • যদি |সংখ্যা1[i]-সংখ্যা2[i]|> minn_diff, তারপর

      • ind :=i

      • minn_diff :=|সংখ্যা1[i] - সংখ্যা2[i]|

  • পার্থক্য :=|সংখ্যা1[ইন্ড] - সংখ্যা2[ইন্ড]|

  • index :=ind

  • 0 থেকে সংখ্যা 1 - 1 এর আকারের জন্য, করুন

    • যদি আমি ind এর মত না হয়, তাহলে

      • যদি |সংখ্যা1[i] - সংখ্যা2[ইন্ড]|

        • সূচক :=i

        • পার্থক্য :=|সংখ্যা1[i]-সংখ্যা2[ইন্ড]|

  • যোগফল :=0

  • 0 থেকে সংখ্যা 1 - 1 এর আকারের জন্য, করুন

    • যদি আমি ind এর মতই হয়, তাহলে

      • summ :=summ + |nums1[index] - nums2[i]|

    • অন্যথায়,

      • summ :=summ + |সংখ্যা1[i] - nums2[i]|

  • রিটার্ন সাম মোড (10^9 + 7)

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

def solve(nums1, nums2):
   if(nums1==nums2):
      return(0)

   minn_diff = float('-inf')
   ind = -1
   for i in range(len(nums1)):
      if(abs(nums1[i]-nums2[i]) > minn_diff):
         ind = i
         minn_diff = abs(nums1[i]-nums2[i])
   
   diff = abs(nums1[ind]-nums2[ind])
   index = ind
   for i in range(len(nums1)):
      if(i!=ind):
         if(abs(nums1[i]-nums2[ind])<diff):
            index = i
            diff = abs(nums1[i]-nums2[ind])

   summ = 0
   for i in range(len(nums1)):
      if(i==ind):
         summ += abs(nums1[index]-nums2[i])
      else:
         summ += abs(nums1[i]-nums2[i])
   return(summ%(10**9 + 7))

nums1 = [2,8,6]
nums2 = [3,4,6]
print(solve(nums1, nums2))

ইনপুট

[2,8,6], [3,4,6]

আউটপুট

3

  1. পাইথন প্রোগ্রাম একটি তালিকার ক্রমবর্ধমান যোগফল খুঁজে বের করতে

  2. অ্যারের যোগফল খুঁজে পেতে পাইথন প্রোগ্রাম

  3. পাইথন প্রোগ্রাম একটি তালিকার সমস্ত জোড়ার মধ্যে পরম পার্থক্যের যোগফল খুঁজে বের করতে

  4. সংখ্যার ন্যূনতম যোগফল নির্ণয়ের জন্য পাইথন প্রোগ্রাম