278. 第一个错误的版本(Easy)
题解
明确目标,找出错误的版本,当找到错误版本的时候 right = mid
,可以接受。当找到正确版本的时候,需要拒绝left = mid + 1
二分查找实 现的四个条件
- 向左查找:left = mid + 1
- **向右查找:right = mid **
题解
二分查找
明确一点:寻找到的值是靠右的
Python示例
# 模板1 左闭右闭
class Solution:
def firstBadVersion(self, n):
"""
:type n: int
:rtype: int
"""
ans = 0
left, right = 1, n
while left <= right:
mid = (left + right) >> 1
is_bad_version = isBadVersion(mid)
if is_bad_version == True:
ans = mid # 这里一定是 mid, ans 一定是在 is_bad_version 为 True 的情况
right = mid - 1
else:
left = mid + 1
return ans
# 模板2 左闭右开,自然是找到靠右的值
class Solution:
def firstBadVersion(self, n):
"""
:type n: int
:rtype: int
"""
left, right = 1, n + 1 # 开区间
while left < right:
mid = (left + right) >> 1
is_bad_version = isBadVersion(mid)
if is_bad_version == True:
right = mid
else:
left = mid + 1
return left