以下为ChatGPT自动生成的解答,正确与否请自行判断。
BFE.devAI解答 - JavaScript 代码题
10. 找出第一个不良版本
解答:
这是一个典型的二分查找题目,可以运用二分查找的思路进行解答。
我们假设最后一个版本是n,二分查找需要确定一个左右边界,初始的左边界是1,右边界是n。每次二分查找会将中间的版本mid传入isBad函数中,如果返回值是true,说明有bug,我们需要继续在左侧寻找;否则说明没有bug,我们需要继续在右侧寻找。这样循环进行,直到左右边界相等,返回左边界即可。
如果遍历完整个程序还没有找到坏掉的版本,则返回-1。
参考代码:
function firstBadVersion(n) {
let left = 1;
let right = n;
while (left < right) {
const mid = Math.floor((left + right) / 2);
if (isBadVersion(mid)) {
right = mid; // 还在左侧寻找
} else {
left = mid + 1; // 在右侧寻找
}
}
return isBadVersion(left) ? left : -1;
}