g0201_0300.s0278_first_bad_version.Solution Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java21 Show documentation
Show all versions of leetcode-in-java21 Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
package g0201_0300.s0278_first_bad_version;
// #Easy #Binary_Search #Interactive #Algorithm_I_Day_1_Binary_Search #Binary_Search_I_Day_5
// #Level_1_Day_7_Binary_Search #2022_07_06_Time_15_ms_(87.89%)_Space_39.3_MB_(85.40%)
/* The isBadVersion API is defined in the parent class VersionControl.
boolean isBadVersion(int version); */
/**
* 278 - First Bad Version\.
*
* Easy
*
* 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
**/
public class Solution extends VersionControl {
public Solution(int bad) {
super(bad);
}
public int firstBadVersion(int n) {
int start = 1;
int end = n;
while (start < end) {
int mid = start + (end - start) / 2;
if (isBadVersion(mid)) {
end = mid;
} else {
start = mid + 1;
}
}
return start;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy