力扣每日一题:278.第一个错误的版本 欢度端午的二分水题!

简介: 力扣每日一题:278.第一个错误的版本 欢度端午的二分水题!

278.第一个错误的版本


https://leetcode-cn.com/problems/first-bad-version/solution/278di-yi-ge-cuo-wu-de-ban-ben-by-qingfen-gp99/

难度:简单


题目:

你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。

假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。

你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。


示例:

给定 n = 5,并且 version = 4 是第一个错误的版本。
调用 isBadVersion(3) -> false
调用 isBadVersion(5) -> true
调用 isBadVersion(4) -> true
所以,4 是第一个错误的版本。


分析

这是一道标准的,读题3分钟解题30秒题目。

其实只需要关注查找、尽可能少的次数这些关键字就可以判断出是一道二分查找的题目了。

题目中虚拟构建了 isBadVersion 方法用于判断结果是True or False。

所以,今天只能说是力扣庆祝端午快乐的一道放水送分题...


解题:

class Solution:
    def firstBadVersion(self, n):
        left = 1
        right = n
        while left < right:
            mid = (left + right) // 2
            if isBadVersion(mid):
                right = mid
            else:
                left = mid + 1
        return left



相关文章
|
8月前
|
C语言
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-6 删除字符 (20分)
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-6 删除字符 (20分)
|
8月前
|
人工智能 算法 Java
截断数组(蓝桥杯每日一题)
截断数组(蓝桥杯每日一题)
53 0
|
存储 算法 Serverless
代码随想录算法训练营第六天 | LeetCode 242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和
代码随想录算法训练营第六天 | LeetCode 242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和
78 0
代码随想录算法训练营第六天 | LeetCode 242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和
|
算法 安全
代码随想录算法训练营第六天| 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和
代码随想录算法训练营第六天| 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和
《蓝桥杯每日一题》双指针·AcWing 3768. 字符串删减
《蓝桥杯每日一题》双指针·AcWing 3768. 字符串删减
66 0
|
算法
《蓝桥杯每日一题》KMP算法·AcWing 141. 周期
《蓝桥杯每日一题》KMP算法·AcWing 141. 周期
144 0
|
人工智能
《蓝桥杯每日一题》 前缀和·Acwing 3956. 截断数组
《蓝桥杯每日一题》 前缀和·Acwing 3956. 截断数组
82 0
|
算法
《蓝桥杯每日一题》二分·AcWing 1460. 我在哪?
《蓝桥杯每日一题》二分·AcWing 1460. 我在哪?
68 0
|
机器学习/深度学习
《蓝桥杯每日一题》背包dp·AcWing3382. 整数拆分
《蓝桥杯每日一题》背包dp·AcWing3382. 整数拆分
85 0
|
人工智能
【蓝桥杯集训·每日一题】AcWing 3956. 截断数组
文章目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 三、知识风暴 一维前缀和
71 0