278. 第一个错误的版本
https://leetcode-cn.com/problems/first-bad-version
题目描述
方法1:二分法
思路
寻找最左边的满足条件的值
框架:
首先定义搜索区间为 [left, right],左右都闭合。
循环搜索条件为 left <= right,只要区间内有元素就继续寻找。
循环体内,我们不断更新 mid ,并判断 mid 是否符合题目要求。
如果 mid 符合要求,我们找到了一个备胎, 接着收缩右边界,继续看看左边还有没有。
否则收缩左边界,去右侧寻找。
最后我们定点到 left 元素上,由于不会提前返回,因此我们需要检查最终的 left 是否符合要求。
如果不符合题目要求,或者 left 出了右边的边界,说明没有找到,返回 -1。
否则返回 left 即可。
复杂度
时间复杂度:$O(logn)$
空间复杂度:$O(1)$
代码
Python Code
Last updated
Was this helpful?