Leetcode题解之 —— 第一个错误的版本

思路


思路一

二分查找法

  • 中间值取整
  • middle值符合条件, 找其后半部分
  • 反之, 查找前半部分

题解


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/**
* Definition for isBadVersion()
*
* @param {integer} version number
* @return {boolean} whether the version is bad
* isBadVersion = function(version) {
* ...
* };
*/

/**
* @param {function} isBadVersion()
* @return {function}
*/
var solution = function (isBadVersion) {
/**
* @param {integer} n Total versions
* @return {integer} The first bad version
*/
return function (n) {
let [start, end] = [1, n];
while (start < end) {
let middle = ~~((start + end) / 2);

if (isBadVersion(middle)) {
end = middle;
} else {
start = middle + 1;
}
}

return start;
};
};