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

পাইথনে সমান সমifiers অর্জনের জন্য ন্যূনতম অপারেশন বের করার প্রোগ্রাম


মনে করুন nums1 এবং nums2 নামক দুটি অ্যারে আছে। অ্যারেগুলোর ভ্যালু ১ থেকে ৬ (ইনক্লুসিভ) এর মধ্যস্থ। এক অপারেশনে আমরা যেকোনো অ্যারেতে যেকোনো ভ্যালুকে ১ থেকে ৬ এর মধ্যে যেকোনো ভ্যালুতে আপডেট করতে পারি। আমাদের ন্যূনতম কতগুলো অপারেশন দরকার যাতে nums1 এবং nums2-এর সম্মান সমান হয়। যদি সম্ভব না হয় তবে -1 রিটার্ন করুন।

যেমন, ইনপুট nums1 = [1,5,6], nums2 = [4,1,1] হলে, আউটপুট হবে ২ কারণ nums2 কে [4,1,6] এ বদলে (১ম অপারেশন), তারপর [4,2,6] এ বদলে (২য় অপারেশন) এর সম্মান nums1-এর সমান করা যায়।

সমাধান পদ্ধতি

এই সমস্যাটি সমাধান করতে নিচের ধাপগুলো অনুসরণ করুন:

  • s1 := nums1-এর সব এলিমেন্টের যোগফল

  • s2 := nums2-এর সব এলিমেন্টের যোগফল

  • nums1 এবং nums2 সর্ট করুন

  • যদি s1 > s2 হয়, তবে

    • nums1 এবং nums2 স্ব্যাপ করুন

    • s1 এবং s2 স্ব্যাপ করুন

  • ans := 0

  • left := 0, right := nums2-এর সাইজ - 1

  • যখন left < nums1-এর লেংথ বা right >= 0, तब

    • যদি s1 == s2 হয়, তবে

      • ans রিটার্ন করুন

    • curr_left := nums1[left] যদি left < nums1-এর লেংথ, অন্যথায় 7

    • curr_right := nums2[right] যদি right >= 0, অন্যথায় 0

    • যদি 6-curr_left >= curr_right-1 হয়, তবে

      • s1 := s1 + min(6-curr_left, s2-s1)

      • left := left + 1

    • অন্যথায়,

      • s2 := s2 - min(curr_right-1, s2-s1)

      • right := right - 1

    • ans := ans + 1

  • যদি s1 != s2 হয় তবে -1 রিটার্ন করুন, অন্যথায় ans রিটার্ন করুন

উদাহরণ

নিচের ইমপ্লিমেন্টেশনটি দেখুন আরও ভালো বোঝার জন্য:

def solve(nums1, nums2):    s1 = sum(nums1)    s2 = sum(nums2)    nums1.sort()    nums2.sort()    if s1>s2:       nums1, nums2 = nums2, nums1       s1, s2 = s2, s1    ans = 0    left, right = 0, len(nums2)-1    while(left=0):       if s1==s2:          return ans       curr_left = nums1[left] if left=0 else 0       if 6-curr_left>=curr_right-1:       s1+= min(6-curr_left, s2-s1) left+=1 else: s2-= min(curr_right-1, s2-s1) right-=1 ans+=1 return -1 if s1!=s2 else ans nums1 = [1,5,6] nums2 = [4,1,1] print(solve(nums1, nums2))

ইনপুট

[1,5,6], [4,1,1] 

আউটপুট

2

  1. পাইথনে সর্বোচ্চ সমষ্টিয়ুক্ত সন্নিবিষ্ট সাবলিস্টের সমষ্টি খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে একটি সংখ্যাকে অন্য সংখ্যায় রূপান্তর করার ন্যূনতম অপারেশন বের করার প্রোগ্রাম

  3. একটি সংখ্যার সম ফ্যাক্টরের যোগফল বের করার পাইথন প্রোগ্রাম

  4. পাইথনে একটি সংখ্যার গুণনীয়গুলোর ন্যূনতম যোগফল বের করার প্রোগ্রাম