第一个错的版本题目描述:你是一名产品经理,目前正在带领团队开发新产品。不幸的是,您的产品的最新版本未通过质量测试。由于每个版本都是在上一个版本的基础上开发的,所以错误版本之后的所有版本都是错误的。假设你有n个版本[1,2,...,n]并且你想找到导致所有后续版本失败的第一个错误版本。单元测试中可以调用boolisBadVersion(version)接口判断版本号version是否出错。实现一个函数来查找第一个错误的版本。您应该尽量减少对API的调用次数。例子见LeetCode官网。来源:LeetCode链接:https://leetcode-cn.com/probl...版权归LeetCode所有。商业转载请联系官方授权,非商业转载请注明出处。解法一:二分法用low和high分别记录第一个元素和最后一个元素,然后用二分法求解。解决过程如下:用mid记录中间位置,即low+(high-low)/2,然后调用isBadVersion(mid)方法判断当前版本是否为错误版本;如果当前版本是错误版本,且当前版本之前的版本(需要再次调用isBadVersion方法)也是错误版本,则将high重置为mid-1,然后进行下一步Round处理;如果当前版本是错误版本,但当前版本的前一个版本不是错误版本,则当前版本是第一个错误版本,返回当前版本;如果当前版本不是错误版本,则将low重置为mid+1,进行下一轮处理。循环终止的条件是低大于高。最后,如果没有发现错误版本,则返回-1。publicclassLeetCode_278extendsVersionControl{/***二分法**@paramn*@return*/publicstaticintfirstBadVersion(intn){intlow=1,high=n;while(low<=high){intmid=low+(high-low)/2;if(isBadVersion(mid)){if(mid>low&&isBadVersion(mid-1)){high=mid-1;}else{返回中间;}}else{低=中+1;}}返回-1;}publicstaticvoidmain(String[]args){System.out.println(firstBadVersion(2126753390));}}classVersionControl{/***测试数据,第一个1702766718版本都不是坏版本,从1702766719版本开始*/publicstaticbooleanisBadVersion(intversion){if(version<1702766719){returnfalse;}else{返回真;}}}【每日留言】如果成功有捷径,那条路一定要坚定抓住
