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、编程实现
# 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浏览量
266843 -
机器学习
+关注
关注
67文章
8561浏览量
137208 -
深度学习
+关注
关注
73文章
5604浏览量
124609 -
leetcode
+关注
关注
0文章
20浏览量
2557
发布评论请先 登录
相关推荐
热点推荐
使用 DMM Web API 获取搜索列表数据
DMM 平台提供了丰富的 Web API 接口,允许开发者获取其平台上的各种数据。其中一个常用的接口是用于获取搜索列表结果的 API。本文将介绍如何调用此 API 来获取商品或内容的列表信息
工业数据采集的真相:99%的企业都走错了第一步
大多数企业在数据采集上犯的第一个错误是:从硬件开始思考。
“我们需要几个网关?”
“哪种型号的采集模块?”
“预算够买多少台设备?”
这些看似合理的问题,实际上把解决方案局限在了“硬件采购”的层面。真正的数据采集,应该从三
固件版本错配:一个让老工程师都栽过跟头的“低级错误”
在硬件生产与研发调试中,固件版本与硬件版本不匹配所导致的问题,其排查成本往往远高于问题本身。此类错误并非偶然的操作失误,而是暴露了从开发到生产移交过程中版本管理流程的缺失。
发表于 12-18 10:31
一文读懂!AI搜索既是趋势也是未来,一定不可错过的GEO机遇
AI对搜索来说不是替代,而是进化,是搜索体验的下一个阶段。并已在众多你意想不到的场景中深入我们的生活,应用非常广泛,到处都有AI搜索的影子。
淘宝图片搜索商品API指南
一、摘要 淘宝图片搜索商品API是基于图像识别技术的智能搜索接口,允许用户通过上传商品图片来搜索相似或同款商品。该接口广泛应用于比价、找同款、商品识别等电商场景。 二、接口概述 1.功
线性搜索与二分搜索介绍
线性搜索(Linear Search):从数组的第一个元素开始,依次将当前元素与目标值进行比较,直到找到目标值或搜索完整个数组。
二分搜索(Binary Search):在有序数组中查
发表于 12-01 07:36
Linux 下交叉编译实战:跑起来你的第一个 STM32 程序
跑起来你的第一个STM32程序。一、准备工作在开始之前,需要准备:1、Linux开发环境Ubuntu、Debian或其他主流发行版都可以。2、ARMGCC交叉编译工具
**CW32L012****开发评估板的第一个程序**
CW32L012****开发评估板的第一个程序
最近以15.99在CW32生态社区入手了这块CW32L012开发评估板,我迫不及待的烧录进电灯程序,看看这块板子是否是正常的,能否满足我后面的学习
发表于 11-22 00:09
请问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
LeetCode初级算法-排序和搜索01:第一个错误的版本
评论