0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

LeetCode初级算法-排序和搜索01:第一个错误的版本

电子设计 来源:电子设计 作者:电子设计 2020-12-10 22:22 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

LeetCode初级算法--排序和搜索01:第一个错误的版本

一、引子

这是由LeetCode官方推出的的经典面试题目清单~
这个模块对应的是探索的初级算法~旨在帮助入门算法。我们第一遍刷的是leetcode推荐的题目。

二、题目

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

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

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

示例:

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

调用 isBadVersion(3) -> false
调用 isBadVersion(5) -> true
调用 isBadVersion(4) -> true

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

1、思路

首先我们可以想到的就是把整个列表都顺序遍历一遍,第一次调用接口出现False的下一个为True的就是我们要求的值,但是这个算法会超时。

我们使用二分查找:

我们要寻找第一个错误版本,也就是要保留最后一个false之后的第一个true。所以在更新边界的时候,右边界就不用减1了,这样最后当左右相等时一定是第一个true。

2、编程实现

python

# The isBadVersion API is already defined for you.
# @param version, an integer
# @return a bool
# def isBadVersion(version):

class Solution:
    def firstBadVersion(self, n):
        """
        :type n: int
        :rtype: int
        """
        left = 1
        right = n
        while left
本文由博客一文多发平台 OpenWrite 发布!

审核编辑 黄昊宇
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 人工智能
    +关注

    关注

    1819

    文章

    50298

    浏览量

    266844
  • 机器学习
    +关注

    关注

    67

    文章

    8561

    浏览量

    137208
  • 深度学习
    +关注

    关注

    73

    文章

    5604

    浏览量

    124610
  • leetcode
    +关注

    关注

    0

    文章

    20

    浏览量

    2557
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ​​​​​​​使用 DMM Web API 获取搜索列表数据

    ​  DMM 平台提供了丰富的 Web API 接口,允许开发者获取其平台上的各种数据。其中常用的接口是用于获取搜索列表结果的 API。本文将介绍如何调用此 API 来获取商品或内容的列表信息
    的头像 发表于 02-09 15:34 358次阅读
    ​​​​​​​使用 DMM Web API 获取<b class='flag-5'>搜索</b>列表数据

    里可以添加本文要记录的大

    或降序排列),就如同水中的气泡最终会上浮到顶端样,故名“冒泡排序”。 1.算法描述 1、比较相邻的元素。如果第一个比第二大,就进行交换
    发表于 01-27 22:05

    C语言插入排序算法和代码

    和待插入的元素。第一轮时,将第一个元素作为排序好的子数组,插入第二元素;第二轮,将前两元素作为排序
    发表于 01-15 06:44

    工业数据采集的真相:99%的企业都走错了第一

    大多数企业在数据采集上犯的第一个错误是:从硬件开始思考。 “我们需要几个网关?” “哪种型号的采集模块?” “预算够买多少台设备?” 这些看似合理的问题,实际上把解决方案局限在了“硬件采购”的层面。真正的数据采集,应该从三
    的头像 发表于 12-26 10:18 259次阅读
    工业数据采集的真相:99%的企业都走错了<b class='flag-5'>第一</b>步

    固件版本错配:让老工程师都栽过跟头的“低级错误

    在硬件生产与研发调试中,固件版本与硬件版本不匹配所导致的问题,其排查成本往往远高于问题本身。此类错误并非偶然的操作失误,而是暴露了从开发到生产移交过程中版本管理流程的缺失。
    发表于 12-18 10:31

    文读懂!AI搜索既是趋势也是未来,定不可错过的GEO机遇

    AI对搜索来说不是替代,而是进化,是搜索体验的下一个阶段。并已在众多你意想不到的场景中深入我们的生活,应用非常广泛,到处都有AI搜索的影子。
    的头像 发表于 12-12 17:38 2703次阅读

    淘宝图片搜索商品API指南

    、摘要 淘宝图片搜索商品API是基于图像识别技术的智能搜索接口,允许用户通过上传商品图片来搜索相似或同款商品。该接口广泛应用于比价、找同款、商品识别等电商场景。 二、接口概述 1.功
    的头像 发表于 12-08 14:26 1334次阅读

    线性搜索与二分搜索介绍

    线性搜索(Linear Search):从数组的第一个元素开始,依次将当前元素与目标值进行比较,直到找到目标值或搜索完整个数组。 二分搜索(Binary Search):在有序数组中查
    发表于 12-01 07:36

    Linux 下交叉编译实战:跑起来你的第一个 STM32 程序

    跑起来你的第一个STM32程序。、准备工作在开始之前,需要准备:1、Linux开发环境Ubuntu、Debian或其他主流发行版都可以。2、ARMGCC交叉编译工具
    的头像 发表于 11-24 19:04 1042次阅读
    Linux 下交叉编译实战:跑起来你的<b class='flag-5'>第一个</b> STM32 程序

    **CW32L012****开发评估板的第一个程序**

    CW32L012****开发评估板的第一个程序 最近以15.99在CW32生态社区入手了这块CW32L012开发评估板,我迫不及待的烧录进电灯程序,看看这块板子是否是正常的,能否满足我后面的学习
    发表于 11-22 00:09

    避雷!树莓派初学者常犯的5错误

    卡、安装错误的操作系统版本、同时使用两网络适配器、使用不合适的电源以及创建无法恢复的备份。但是,只指出问题而不提供解决方案又有什么用呢?继续阅读,我还将推荐
    的头像 发表于 07-22 17:16 1554次阅读
    避雷!树莓派初学者常犯的5<b class='flag-5'>个</b><b class='flag-5'>错误</b>!

    请问Linux+rtos的1.9版本sdk大核开机自启动程序怎么关闭?

    编译开机大核心就出现程序报错,01开发板csi2上面默认接的摄像头是gc2093的,运行的是ov5647 期待结果和实际结果 可以关闭这个自启动程序;也希望顺带知道我要开启自启动的程序放在哪里 软硬件
    发表于 07-22 06:07

    HRTIM变频控制输出的第一个周期频率异常的原因?

    在使用STM32G474CBT6的HRTIM_Mater、HRTIM_TIMER_B和HRTIM_TIMER_D输出同步互补的四路输出时,关闭4路输出和三定时器的计数后,再次开启时第一个周期的频率
    发表于 04-25 06:17

    文教你构建第一个应用程序

    构建第一个应用程序 创建新工程 步骤 1通过如下两种方式,打开工程创建向导界面。 如果当前未打开任何工程,可以在 DevEco Studio 的欢迎页,选择“Projects &
    发表于 04-24 06:41

    HRTIM变频控制输出的第一个周期频率异常的原因?

    在使用STM32G474CBT6的HRTIM_Mater、HRTIM_TIMER_B和HRTIM_TIMER_D输出同步互补的四路输出时,关闭4路输出和三定时器的计数后,再次开启时第一个周期的频率
    发表于 04-22 12:08