मान लीजिए एक कंपनी में, एक उत्पाद प्रबंधक एक टीम का नेतृत्व कर रहा है जो एक नया उत्पाद विकसित करता है। मान लीजिए कि नवीनतम संस्करण गुणवत्ता जांच में विफल रहता है। चूंकि प्रत्येक संस्करण पिछले संस्करण के आधार पर विकसित किया गया है, इसलिए खराब संस्करण के बाद के सभी संस्करण खराब होंगे। तो हमारे पास n तत्वों के साथ एक सरणी A है [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