ধরুন একটি কোম্পানিতে, একজন পণ্য ব্যবস্থাপক একটি দলকে নেতৃত্ব দিচ্ছেন যারা একটি নতুন পণ্য বিকাশ করে। ধরুন সর্বশেষ সংস্করণ গুণমান পরীক্ষায় ব্যর্থ হয়েছে। যেহেতু প্রতিটি সংস্করণ পূর্ববর্তী সংস্করণের উপর ভিত্তি করে তৈরি করা হয়েছে, তাই একটি খারাপ সংস্করণের পরে সমস্ত সংস্করণ খারাপ হবে। তাই আমাদের কাছে n উপাদান [1, 2, … n] সহ একটি অ্যারে রয়েছে এবং আমাদের এই অ্যারে থেকে প্রথম খারাপ সংস্করণটি খুঁজে বের করতে হবে।
বিবেচনা করুন আমাদের একটি ফাংশন isBadVersion(version_id), সংস্করণটি খারাপ হোক বা না হোক এটি ফিরে আসবে। উদাহরণস্বরূপ, ধরুন n =5, এবং সংস্করণ =4 প্রথম খারাপ সংস্করণ। সুতরাং যদি isBadVersion(3) মিথ্যা isBadVersion(5) সত্য ফেরত দেয়, এবং isBadVersion(4)ও সত্য দেয়, তাহলে প্রথম খারাপ সংস্করণ হল 4
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- যখন n <2, তারপর n ফিরুন
- প্রদত্ত ফাংশন ব্যবহার করে খারাপ সংস্করণ সনাক্ত করতে বাইনারি অনুসন্ধান পদ্ধতি সম্পাদন করুন।
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
first_bad = 0 def isBadVersion(version): if version >= first_bad: return True return False class Solution: def firstBadVersion(self, n): if n <2: return n start = 1 end = n while(start<=end): mid = (start+end)//2 if isBadVersion(mid) and not isBadVersion(mid-1): return mid elif isBadVersion(mid-1): end = mid-1 else: start = mid+1 ob1 = Solution() first_bad = 4 op = ob1.firstBadVersion(5) print(op)
ইনপুট
5 4
আউটপুট
4