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

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

    关注

    1781

    文章

    45031

    浏览量

    232418
  • 机器学习
    +关注

    关注

    66

    文章

    8200

    浏览量

    131244
  • 深度学习
    +关注

    关注

    73

    文章

    5287

    浏览量

    120178
  • leetcode
    +关注

    关注

    0

    文章

    20

    浏览量

    2306
收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

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

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

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

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

    冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序(如从大到小、首字母从A到Z)
    的头像 发表于 02-25 12:27 293次阅读
    C语言实现经典<b class='flag-5'>排序</b><b class='flag-5'>算法</b>概览

    十大排序算法总结

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

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

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

    Matter 1.2版本正式发布,泰凌微电子第一个支持

    目前,泰凌已成为第一个支持该最新标准的芯片供应商。在matter标准转变为1.2版本的过程中,泰凌积极参与matter社区的sdk维护和开发工作,并参与matter 1.2标准的中文解释。因此,泰凌的matter over thread sdk完全支持matter 1.2
    的头像 发表于 11-03 10:20 413次阅读

    排序算法有哪些

    1. 归并排序(递归版) 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治策略,即分为两步:分与治。 分:先递归分解数组成子数组 治:将分阶段得到的
    的头像 发表于 10-11 15:49 411次阅读
    <b class='flag-5'>排序</b><b class='flag-5'>算法</b>有哪些

    jwt冒泡排序的原理

    排序的原理: 我们以一个队伍站队为例,教官第一次给队员排队是无序的,这时候就需要排队,按矮到高的顺序排列,首先拎出第一第二个比较,如果第一个队员比第二个要高,则两个交换位置, 高的放到
    的头像 发表于 09-25 16:33 379次阅读
    jwt冒泡<b class='flag-5'>排序</b>的原理

    排序算法之选择排序

    选择排序: (Selection sort)是一种简单直观的排序算法,也是一种不稳定的排序方法。 选择排序的原理: 一组无序待排数组,做升序
    的头像 发表于 09-25 16:30 977次阅读
    <b class='flag-5'>排序</b><b class='flag-5'>算法</b>之选择<b class='flag-5'>排序</b>

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

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

    FPGA排序-冒泡排序介绍

    排序算法是图像处理中经常使用一种算法,常见的排序算法有插入排序、希尔
    发表于 07-17 10:12 790次阅读
    FPGA<b class='flag-5'>排序</b>-冒泡<b class='flag-5'>排序</b>介绍

    基于Raspberry Pi远程查看项目AstralPi的第一个版本

    电子发烧友网站提供《基于Raspberry Pi远程查看项目AstralPi的第一个版本.zip》资料免费下载
    发表于 07-13 10:10 0次下载
    基于Raspberry Pi远程查看项目AstralPi的<b class='flag-5'>第一个</b><b class='flag-5'>版本</b>

    Python实现的常见内部排序算法

    排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部
    发表于 07-06 12:35 285次阅读
    Python实现的常见内部<b class='flag-5'>排序</b><b class='flag-5'>算法</b>