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 发布!

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

    关注

    1789

    文章

    46636

    浏览量

    236985
  • 机器学习
    +关注

    关注

    66

    文章

    8347

    浏览量

    132294
  • 深度学习
    +关注

    关注

    73

    文章

    5463

    浏览量

    120876
  • leetcode
    +关注

    关注

    0

    文章

    20

    浏览量

    2310
收藏 人收藏

    评论

    相关推荐

    时间复杂度为 O(n^2) 的排序算法

    , O(n2) 的排序算法可能会比 O(nlogn) 的排序算法执行效率高。不过随着数据规模增大, O(nlogn) 的排序
    的头像 发表于 10-19 16:31 956次阅读
    时间复杂度为 O(n^2) 的<b class='flag-5'>排序</b><b class='flag-5'>算法</b>

    SDK 0.9.4在函数中连续调用espconn_sent,只能看到第一个espconn_sent的数据,为什么?

    在 SDK 0.9.3 及更早版本中,如果我在函数中连续调用 espconn_sent,它将发送所有连接的数据。如果我在 0.9.4 中执行相同的操作,我只能看到第一个espconn_sent的数据
    发表于 07-18 08:24

    与屏幕起发送的第一个UART数据时出现初始崩溃,但仅在第一次闪存时出现,为什么?

    =0x00000000, depc=0x0 000000 ets 2013-01-8,第一个原因:2,开机模式:(1,7) ets 2013-01-8,第一个原因:4,开机模式:(
    发表于 07-09 07:39

    手把手教你排序算法怎么写

    今天以直接插入排序算法,给大家分享一下排序算法的实现思路,主要包含以下部分内容:插入排序介绍插入排序
    的头像 发表于 06-04 08:03 624次阅读
    手把手教你<b class='flag-5'>排序</b><b class='flag-5'>算法</b>怎么写

    求助,用CubeMX配置占空比30%的PWM输出第一个波形不准确是为什么?

    我用的是G0的芯片配置,通过抓波发现第一个波形永远与我配置的占空比不准确,但是除了第一个周期不准确外,后面的都没问题。
    发表于 03-18 07:55

    FPGA实现双调排序算法的探索与实践

    双调排序(BitonicSort)是数据独立(Data-independent)的排序算法,即比较顺序与数据无关,特别适合并行执行。在了解双调排序
    发表于 03-14 09:50 522次阅读
    FPGA实现双调<b class='flag-5'>排序</b><b class='flag-5'>算法</b>的探索与实践

    C语言实现经典排序算法概览

    冒泡排序(英语:Bubble Sort)是种简单的排序算法。它重复地走访过要排序的数列,次比
    的头像 发表于 02-25 12:27 407次阅读
    C语言实现经典<b class='flag-5'>排序</b><b class='flag-5'>算法</b>概览

    招就行—鸿蒙OS 编写第一个页面

    在 Java UI 框架中,提供了两种编写布局的方式:在XML中声明UI布局和在代码中创建布局。这两种方式创建出的布局没有本质差别,为了熟悉两种方式,我们将通过 XML 的方式编写第一个页面,通过
    的头像 发表于 01-26 18:01 715次阅读
    <b class='flag-5'>一</b>招就行—鸿蒙OS 编写<b class='flag-5'>第一个</b>页面

    Harvard FairSeg:第一个用于医学分割的公平性数据集

    为了解决这些挑战,我们提出了第一个大规模医学分割领域的公平性数据集, Harvard-FairSeg。该数据集旨在用于研究公平性的cup-disc segmentation,从SLO眼底图像中诊断青光眼,如图1所示。
    的头像 发表于 01-25 16:52 490次阅读
    Harvard FairSeg:<b class='flag-5'>第一个</b>用于医学分割的公平性数据集

    世界上第一个石墨烯半导体的“石墨烯”究竟是什么?

    有媒体报道称有研究团队创造了世界上第一个由石墨烯制成的功能半导体(Functional Graphene Semiconductor)。
    的头像 发表于 01-23 11:26 1085次阅读

    十大排序算法总结

    排序算法是最经典的算法知识。因为其实现代码短,应该广,在面试中经常会问到排序算法及其相关的问题。
    的头像 发表于 12-20 10:39 1065次阅读

    xlookup查询结果错误值什么情况

    出现错误值的原因。 错误值的类型 #VALUE!:当XLOOKUP函数的输入参数不正确时,会出现#VALUE!错误。常见的原因包括: 引用范围
    的头像 发表于 12-03 10:16 1.1w次阅读

    AWS成为第一个提供NVIDIA GH200 Grace Hopper超级芯片的提供商

    2023年的AWS re:Invent大会上,AWS和NVIDIA宣布AWS将成为第一个提供NVIDIA GH200 Grace Hopper超级芯片的云服务提供商。
    的头像 发表于 11-30 09:24 605次阅读
    AWS成为<b class='flag-5'>第一个</b>提供NVIDIA GH200 Grace Hopper超级芯片的提供商

    FPGA图像处理_ISP算法DPC流程

    DPC通常作为ISP算法流程里面的第一个模块,原理也很简单。
    的头像 发表于 11-25 10:04 1632次阅读
    FPGA图像处理_ISP<b class='flag-5'>算法</b>DPC流程

    python升序和降序排序代码

    Python是种简洁而强大的编程语言,提供了许多实用的函数和方法来排序数据。在本文中,我们将详细讨论Python中的升序和降序排序。我们将深入探讨不同的排序
    的头像 发表于 11-21 15:20 3033次阅读