LeetCode 0278. First Bad Version第一个错误的版本【Easy】【Python】【二分】

Problem

You are a product manager and currently leading a team to develop a new product. Unfortunately, the latest version of your product fails the quality check. Since each version is developed based on the previous version, all the versions after a bad version are also bad.

Suppose you have n versions [1, 2, ..., n] and you want to find out the first bad one, which causes all the following ones to be bad.

You are given an API bool isBadVersion(version) which will return whether version is bad. Implement a function to find the first bad version. You should minimize the number of calls to the API.

Example:

Given n = 5, and version = 4 is the first bad version.

call isBadVersion(3) -> false

call isBadVersion(5) -> true

call isBadVersion(4) -> true

Then 4 is the first bad version.

问题

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

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

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

示例:

给定 n = 5,并且 version = 4 是第一个错误的版本。

调用 isBadVersion(3) -> false

调用 isBadVersion(5) -> true

调用 isBadVersion(4) -> true

所以,4 是第一个错误的版本。

思路

二分查找

因为版本是从 1 到 n,所以 low 初值设为 1,high 初值设为 n。

时间复杂度: O(logn)

空间复杂度: O(1)

Python代码

# The isBadVersion API is already defined for you.

# @param version, an integer

# @return a bool

# def isBadVersion(version):

class Solution(object):

def firstBadVersion(self, n):

"""

:type n: int

:rtype: int

"""

low, high = 1, n # 1-n

while low <= high:

mid = int((low + high) / 2)

if isBadVersion(mid) == False:

low = mid + 1

else:

high = mid - 1

return low

代码地址

第一个正式的python版本_LeetCode | 0278. First Bad Version第一个错误的版本【Python】...相关推荐

  1. python运行启动报错解决方法_pyspider启动错误解决(Python 3.7)

    问题一 安装好pyspider之后,在启动的时候,报出上图错误. 原因 async和await从 python3.7 开始已经加入保留关键字中. 参考: What's New In Python 3. ...

  2. 已知x=python是一种非常好的编程语言-全国计算机二级【Python卷A】模拟

    原标题:全国计算机二级[Python卷A]模拟 一.单项选择题 1. 关于数据的存储结构,以下选项描述正确的是 存储在外存中的数据 数据所占的存储空间量 数据在计算机中的顺序存储方式 数据的逻辑结构在 ...

  3. Spring Cloud Alibaba 发布第一个正式版本,顺利完成孵化!

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 相信大家对上周的 <来自 Spring Cloud 官方的消息,Spring Clou ...

  4. .NET ORM FreeSql 第一个正式版本发布 v1.0.0

    一.简介 FreeSql 是 .NET 平台下的对象关系映射技术(O/RM),支持 .NetCore 2.1+ 或 .NetFramework 4.0+ 或 Xamarin. 从 0.0.1 发布到今 ...

  5. python第一个发行版本由c语言实现_1 晓白的python逆袭之旅基础篇---第一章

    第一章 来自晓白的困惑 1人物介绍晓白:一位即将毕业,踏入社会的大学生,对自己的前途充满了困惑,对计算机编程感兴趣,想以后进入互联网行业,从事开发工作,但是不知如何开始. 老袁:晓白的学长,同时也是晓 ...

  6. 十年来第一个正式版本 | Kali Linux 2020 发布后我们该怎么渗透?

    2020年Kali Linux推出了十年来的第一个正式版本--Kali Linux 2020.1 关于这个版本新特性的简短总结: 默认用户为非root用户 独立的Kali安装镜像 无需root的Kal ...

  7. LeetCode:278(Python)—— 第一个错误的版本(简单)

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

  8. Python Web 深度学习实用指南:第一、二部分

    原文:Hands-On Python Deep Learning for the Web 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自[ApacheCN 深度学习 译文集],采用译后编辑 ...

  9. python要在哪里写代码-初识python【今天开始写代码】第一课

    这门课程包含的内容适用于初级的数据科学家们来提升自己的python技能.其中,第一节课我们会简单得介绍一下python的语法,变量赋值和几何运算. 你好,Python! Python是以英国喜剧团体巨 ...

最新文章

  1. 集群分发脚本xsync
  2. Premiere制作VCD视频几个关键设置
  3. 【Matlab与线性代数】Matlab中对数组元素引用方法总结
  4. js html转图片 ie8,用js滤镜实现在IE8-的图片旋转效果实现不了
  5. Nhibernate配置和访问数据问题
  6. Iphone NSMutableArray,NSMutableDictionary AND 动态添加按钮
  7. 小一爬取了 14455 个已发行基金,到底能分析点啥出来?
  8. 程序员做到年薪60万也不去炫富,背后原因曝光,麻烦做个人吧
  9. Python的下载安装图文教程(超详细!!!)
  10. Win7重装后修复Ubuntu引导项
  11. 二极管伏安特性曲线_二极管的温度特性
  12. 思维导图c语言java区别_C语言基本数据类型的思维导图
  13. linux中ll排序命令,ll命令
  14. C# 判断文件是否在使用的状态FSDF
  15. IAM之Tivoli Identity Manager(二)
  16. java520.1314表白_告白日表白公式 520.1314 临沂人知道怎么玩吗
  17. 【ZeloEngine】反射系统填坑小结
  18. 现流行的九大前端框架
  19. 七种PDF转Excel的转换方法,分分钟提高你的工作效率
  20. 学生HTML个人网页作业作品 HTML+CSS校园环保(大学生环保网页设计与实现)

热门文章

  1. CentOS7 开机自启动脚本 chkconfig方式
  2. 数据结构函与算法之函数与递归
  3. 最大子数组问题 线性时间_我最喜欢的线性时间排序算法
  4. xamarin_如何实现声明性Xamarin表单验证
  5. 使用Minions解释JavaScript回调
  6. 计算机专业跨专业考文科,给07年想跨专业考湖大计算机专业的同学
  7. sdio接口_单片机基础 —— 使用SDMMC接口读写SD卡数据
  8. 节点预测与边预测任务实践
  9. 使用Python及Selenium自动发表文章
  10. Python中的抽象类和抽象方法