278. First Bad Version LeetCode Solution
In this guide, you will get 278. First Bad Version LeetCode Solution with the best time and space complexity. The solution to First Bad Version problem is provided in various programming languages like C++, Java, and Python. This will be helpful for you if you are preparing for placements, hackathons, interviews, or practice purposes. The solutions provided here are very easy to follow and include detailed explanations.
Table of Contents
- Problem Statement
- Complexity Analysis
- First Bad Version solution in C++
- First Bad Version solution in Java
- First Bad Version solution in Python
- Additional Resources

Problem Statement of First Bad Version
You are a product manager and currently leading a team to develop a new product. Unfortunately, the latest version of your product fails the quality check. Since each version is developed based on the previous version, all the versions after a bad version are also bad.
Suppose you have n versions [1, 2, …, n] and you want to find out the first bad one, which causes all the following ones to be bad.
You are given an API bool isBadVersion(version) which returns whether version is bad. Implement a function to find the first bad version. You should minimize the number of calls to the API.
Example 1:
Input: n = 5, bad = 4
Output: 4
Explanation:
call isBadVersion(3) -> false
call isBadVersion(5) -> true
call isBadVersion(4) -> true
Then 4 is the first bad version.
Example 2:
Input: n = 1, bad = 1
Output: 1
Constraints:
1 <= bad <= n <= 231 – 1
Complexity Analysis
- Time Complexity: O(\log n)
- Space Complexity: O(1)
278. First Bad Version LeetCode Solution in C++
bool isBadVersion(int version);
class Solution {
public:
int firstBadVersion(int n) {
int l = 1;
int r = n;
while (l < r) {
const int m = l + (r - l) / 2;
if (isBadVersion(m))
r = m;
else
l = m + 1;
}
return l;
}
};
/* code provided by PROGIEZ */
278. First Bad Version LeetCode Solution in Java
public class Solution extends VersionControl {
public int firstBadVersion(int n) {
int l = 1;
int r = n;
while (l < r) {
final int m = l + (r - l) / 2;
if (isBadVersion(m))
r = m;
else
l = m + 1;
}
return l;
}
}
// code provided by PROGIEZ
278. First Bad Version LeetCode Solution in Python
class Solution:
def firstBadVersion(self, n: int) -> int:
l = 1
r = n
while l < r:
m = (l + r) >> 1
if isBadVersion(m):
r = m
else:
l = m + 1
return l
# code by PROGIEZ
Additional Resources
- Explore all LeetCode problem solutions at Progiez here
- Explore all problems on LeetCode website here
Happy Coding! Keep following PROGIEZ for more updates and solutions.