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

পাইথনে স্ট্রার্ট থেকে এন্ড পৌঁছানোর ন্যূনতম অপারেশন (x2 বা -1)

দেওয়া start এবং end। অনুমোদিত অপারেশন: ১) ১ বিয়োগ, ২) ২ দিয়ে গুণ। start-কে end-এ কনভার্ট করার ন্যূনতম অপারেশন সংখ্যা বের করতে হবে।

উদাহরণ: start=2, end=7 → ২×২=৪, ৪×২=৮, ৮-১=৭ → ৩ অপারেশন।

রিভার্স গ্রিডি সমাধান (এন্ড থেকে স্ট্রার্টে)

end-কে start-এ রিডিউস করা সহজ কারণ:

  • যদি end <= start: শুধু start - end বার ডিক্রিমেন্ট করলেই হবে।
  • যদি end বিজোড়: end += 1 (রিভার্স অফ ডিক্রিমেন্ট)।
  • যদি end জোড়: end //= 2 (রিভার্স অফ মাল্টিপ্লাই)।

পাইথন কোড

class Solution:
    def solve(self, start, end):
        ans = 0
        while True:
            if end <= start:
                return ans + start - end
            elif end % 2:
                end += 1
                ans += 1
            else:
                end //= 2
                ans += 1

ob1 = Solution()
print(ob1.solve(2, 7))  # 3

টাইম কমপ্লেক্সিটি: O(log end), স্পেস: O(1)। এটি লিটকোড "Broken Calculator" সমস্যার সমাধান।

  1. পাইথনে ম্যাট্রিক্সে ডেস্টিনেশন পৌঁছাতে ন্যূনতম উচ্চতা বৃদ্ধি খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে দেয়া সংখ্যার বাইনারি রিপ্রেজেন্টেশনে ১ বিটের সংখ্যা গণনা করার প্রোগ্রাম

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

  4. পাইথনে স্ট্রিং s-কে পরিবর্তন করে t কে সাবস্ট্রিং बनानेয় ন্যূনতম অপারেশন বের করার প্রোগ্রাম