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 发布!
审核编辑 黄昊宇
-
人工智能
+关注
关注
1797文章
47867浏览量
240858 -
机器学习
+关注
关注
66文章
8453浏览量
133166 -
深度学习
+关注
关注
73文章
5521浏览量
121663 -
leetcode
+关注
关注
0文章
20浏览量
2349
发布评论请先 登录
相关推荐
ADS1274用DRDY+TDM输出模式下,读到的第一个字节是无效的,为什么?
ADS1299在DAISY-CHAIN模式下只能配置第一个AD吗,那后面几个都是要怎么配置寄存器,都和第一个一样吗?
ADS1194标识芯片的第一个只读寄存器读取数据数据错误,为什么?
ADS127L01读取ADC数据时DOUT在DRDY拉低之前或第一个SCLK到来之前就已经开始切换,为什么?
SDK 0.9.4在函数中连续调用espconn_sent,只能看到第一个espconn_sent的数据,为什么?
与屏幕一起发送的第一个UART数据时出现初始崩溃,但仅在第一次闪存时出现,为什么?
读取寄存器的值,第一个bit读取不到是为什么?
求助,用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)
评论