मान लीजिए एक कंपनी में, एक उत्पाद प्रबंधक एक टीम का नेतृत्व कर रहा है जो एक नया उत्पाद विकसित करती है। मान लीजिए नवीनतम संस्करण गुणवत्ता जांच में विफल रहता है। चूंकि प्रत्येक संस्करण पिछले संस्करण पर आधारित विकसित होता है, एक खराब संस्करण के बाद के सभी संस्करण खराब होंगे। इसलिए हमारे पास n तत्वों [1, 2, … n] वाली एक सरणी A है और हमें इस सरणी से पहला खराब संस्करण ढूंढना है।
मान लीजिए हमारे पास एक फंक्शन isBadVersion(version_id) है, यह बताएगा कि संस्करण खराब है या नहीं। उदाहरण के लिए, मान लीजिए n = 5, और संस्करण = 4 पहला खराब संस्करण है। तो यदि isBadVersion(3) false वापस करता है, isBadVersion(5) true वापस करता है, और isBadVersion(4) भी true वापस करता है, तो पहला खराब संस्करण 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