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 发布!
审核编辑 黄昊宇
-
人工智能
+关注
关注
1781文章
45031浏览量
232418 -
机器学习
+关注
关注
66文章
8200浏览量
131244 -
深度学习
+关注
关注
73文章
5287浏览量
120178 -
leetcode
+关注
关注
0文章
20浏览量
2306
发布评论请先 登录
相关推荐
求助,用CubeMX配置占空比30%的PWM输出第一个波形不准确是为什么?
FPGA实现双调排序算法的探索与实践
![FPGA实现双调<b class='flag-5'>排序</b><b class='flag-5'>算法</b>的探索与实践](https://file1.elecfans.com/web2/M00/C4/41/wKgZomXyWEeAaEKTAAAJZpFnz-M952.jpg)
xlookup查询结果错误值什么情况
Matter 1.2版本正式发布,泰凌微电子第一个支持
排序算法有哪些
![<b class='flag-5'>排序</b><b class='flag-5'>算法</b>有哪些](https://file1.elecfans.com/web2/M00/A9/7B/wKgZomUmUzaAFnbtAADxsf_-rLo202.jpg)
jwt冒泡排序的原理
![jwt冒泡<b class='flag-5'>排序</b>的原理](https://file1.elecfans.com/web2/M00/A6/0D/wKgaomURRVeANDQmAACDKGXu-Vk088.jpg)
求助,用CubeMX配置占空比30%的PWM输出第一个波形不准确是为什么
基于Raspberry Pi远程查看项目AstralPi的第一个版本
![基于Raspberry Pi远程查看项目AstralPi的<b class='flag-5'>第一个</b><b class='flag-5'>版本</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
评论