用dw做网站怎么给链接,app开发软件怎么做,网页设计公司企业文化怎么写,域名在哪里申请LeetCode双指针#xff1a;第一个错误的版本
题目描述
你是产品经理#xff0c;目前正在带领一个团队开发新的产品。不幸的是#xff0c;你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的#xff0c;所以错误的版本之后的所有版本都是错的。
…LeetCode双指针第一个错误的版本
题目描述
你是产品经理目前正在带领一个团队开发新的产品。不幸的是你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的所以错误的版本之后的所有版本都是错的。
假设你有 n 个版本 [1, 2, ..., n]你想找出导致之后所有版本出错的第一个错误的版本。
你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。
示例 1
输入n 5, bad 4
输出4
解释
调用 isBadVersion(3) - false
调用 isBadVersion(5) - true
调用 isBadVersion(4) - true
所以4 是第一个错误的版本。示例 2
输入n 1, bad 1
输出1解题思路
经典的二分查找数组中必定有一个位置的bool isBadVersion(version)值不一样找到这个位置即可。跳出循环时j在的左边此时i指向即为答案
若mid是错误版本则最后一个正确版本一定在闭区间 [i, mid - 1]若mid是正确版本则最后一个错误版本一定在闭区间 [mid 1, j]
代码
public class Solution extends VersionControl {public int firstBadVersion(int n) {int i 1;int j n;while (i j) {int mid i (j - i) / 2;if (isBadVersion(mid)){j mid - 1;}else {i mid 1;}}return i;}
}