【LeetCode】Python实现-278. 第一个错误的版本
2019-03-24 09:37
531 查看
你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。
假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。
你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。
示例:
给定 n = 5,并且 version = 4 是第一个错误的版本。
调用 isBadVersion(3) -> false
调用 isBadVersion(5) -> true
调用 isBadVersion(4) -> true
所以,4 是第一个错误的版本。
解答:
二分查找
以下面的描述为例,查找第一个X出现的位置序号(6)
√ √ √ √ √ X X X X X X X
1 2 3 4 5 6 7 8 9 10 11 12
# The isBadVersion API is already defined for you. # @param version, an integer # @return a bool # def isBadVersion(version): class Solution(object): def firstBadVersion(self, n): """ :type n: int :rtype: int """ start = 1 end = n while start <= end: mid = (end+start) // 2 if isBadVersion(mid): end = mid - 1 else: start = mid +1 return start
// :取整除 - 返回商的整数部分(向下取整)
9//2
4
-9//2
-5
相关文章推荐
- LeetCode 278. 第一个错误的版本 Python
- leetcode 第一个错误的版本
- [leetcode]第一个错误的版本[javascript]
- 想了解python的urllib2是怎么实现的,可以看pypy版本便于理解
- [简明Python教程3.2版本实现] pickling.py
- leetcode 【 Maximum Subarray 】python 实现
- python-django学习(二)第一个app实现
- python实现指定目录下批量文件的单词计数:并发版本
- leetcode 【 Rotate Image 】python 实现
- Leetcode:LRUCache四个版本实现
- 【APP】python版本低引发python脚本运行错误
- [LeetCode]5 Longest Palindromic Substring(C++,Python实现)
- yum中的python版本错误
- leetcode 【 Reorder List 】python 实现
- leetcode 【 Find Peak Element 】python 实现
- leetcode 【 Search in Rotated Sorted Array II 】python 实现
- leetcode 【 Best Time to Buy and Sell Stock 】python 实现
- Python2.6版本中实现字典推导 PEP 274(Dict Comprehensions)
- Python实现批量执行ArcGIS版本的协调和提交
- python的实现版本