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

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

    关注

    1791

    文章

    47280

    浏览量

    238519
  • 机器学习
    +关注

    关注

    66

    文章

    8418

    浏览量

    132647
  • 深度学习
    +关注

    关注

    73

    文章

    5503

    浏览量

    121170
  • leetcode
    +关注

    关注

    0

    文章

    20

    浏览量

    2328
收藏 人收藏

    评论

    相关推荐

    ADS1299在DAISY-CHAIN模式下只能配置第一个AD吗,那后面几个都是要怎么配置寄存器,都和第一个样吗?

    大家: 1ADS1299在DAISY-CHAIN 模式下只能配置第一个AD么,那后面几个都是要怎么配置寄存器,都和第一个样么? 2 手册上写了有关时钟配置的问题,ADS1299在
    发表于 12-20 06:47

    ADS1194标识芯片的第一个只读寄存器读取数据数据错误,为什么?

    采用ADS1194,MCUSTM32L4系列. 问题描述如下: 1. 标识芯片的第一个只读寄存器读取数据数据错误 2. 读取的数据每一个通道多了一个字节,把多出的字节去掉后位正确
    发表于 12-03 06:59

    LMK1C1104第一个cycle在CLKOUT中丢失,为什么?

    LMK1C1104: CLKIN的第一个cycle在CLKOUT中丢失,详情请参照关联问题
    发表于 11-11 07:12

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

    , O(n2) 的排序算法可能会比 O(nlogn) 的排序算法执行效率高。不过随着数据规模增大, O(nlogn) 的排序
    的头像 发表于 10-19 16:31 1160次阅读
    时间复杂度为 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 694次阅读
    手把手教你<b class='flag-5'>排序</b><b class='flag-5'>算法</b>怎么写

    读取寄存器的值,第一个bit读取不到是为什么?

    遇到以下的问题,读取寄存器中的值,查看寄存器是“0x80000e23”,但是读取之后第一个位没有读取到,只读取到“0xe23”,用来接收寄存器的值的变量类型是(volatile uint32)
    发表于 05-28 06:04

    用FPGA实现双调排序的方法(2)

    典型的排序算法包括冒泡排序、选择排序、插入排序、归并排序、快速
    的头像 发表于 03-21 10:28 641次阅读
    用FPGA实现双调<b class='flag-5'>排序</b>的方法(2)

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

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

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

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

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

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

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

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

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

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

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

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