কম্পিউটার

পাইথনে একটি একক উপাদান পরিবর্তন করে উভয় অ্যারে সমান করা সম্ভব কিনা তা পরীক্ষা করুন


ধরুন আমাদের দুটি অ্যারে আছে nums1 এবং nums2 এবং আরেকটি মান k। নিম্নলিখিত উপায়ে nums1 থেকে যেকোনো একটি উপাদান পরিবর্তন করে উভয় অ্যারেকে সমান করা যায় কিনা তা আমাদের পরীক্ষা করতে হবে (শুধুমাত্র একবার):আমরা পরিসীমা [-k, k] থেকে সংখ্যা 1-এর যেকোনো উপাদানে যেকোনো মান যোগ করতে পারি।

সুতরাং, যদি ইনপুটটি nums1 =[5,7,11] nums2 =[5,5,11] k =8 এর মত হয়, তাহলে আউটপুটটি True হবে কারণ আমরা -2 (পরিসরে [-8,8] যোগ করতে পারি। ) nums1[1] দিয়ে এটিকে 5 করতে হলে এটি nums2 এর মতই হবে।

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

  • তালিকা nums1 এবং nums2 সাজান
  • temp :=মিথ্যা
  • idx :=-1
  • আমি 0 থেকে nums1 - 1 এর পরিসরের জন্য, কর
    • যদি nums1[i] nums2[i] এর মত না হয়, তাহলে
      • যদি temp সত্য হয়, তাহলে
        • মিথ্যে ফেরত দিন
      • temp :=সত্য
      • idx :=i
  • যদি idx হয় -1 বা |nums1[idx]-nums2[idx]| <=k, তারপর
    • সত্য ফেরান
  • মিথ্যে ফেরত দিন

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

উদাহরণ কোড

def solve(nums1, nums2, k):
   nums1.sort()
   nums2.sort()

   temp = False

   idx = -1
   for i in range(len(nums1)):
      if nums1[i] != nums2[i]:
         if temp:
           return False
         temp = True
         idx = i

   if idx == -1 or abs(nums1[idx]-nums2[idx]) <= k:
      return True
   return False

nums1 = [5,7,11]
nums2 = [5,5,11]
k = 8
print(solve(nums1, nums2, k))

ইনপুট

[5,7,11], [5,5,11], 8

আউটপুট

True

  1. আমরা পাইথনে সমান যোগফল দিয়ে দুটি পার্টিশনের গ্রুপ করতে পারি কিনা তা পরীক্ষা করার জন্য প্রোগ্রাম?

  2. পাইথনে এটিকে একক উপাদান তৈরি করতে বাম বা ডান দিক থেকে তালিকার উপাদানগুলিকে চেপে দেওয়ার প্রোগ্রাম

  3. পাইথনের tuples এর মধ্যে উপাদান উপস্থিত আছে কিনা তা পরীক্ষা করুন

  4. একটি অ্যারের সমস্ত সংখ্যা ব্যবহার করে 3 সংখ্যা দ্বারা বিভাজ্য করা সম্ভব কিনা তা পরীক্ষা করার জন্য পাইথন প্রোগ্রাম