网站建设加空间,食品包装设计ppt,免费seo关键词优化排名,苏州高端网站建设定制题目描述 你是产品经理#xff0c;目前正在带领一个团队开发新的产品。不幸的是#xff0c;你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的#xff0c;所以错误的版本之后的所有版本都是错的。
假设你有 n 个版本 [1, 2, …, n]#xff0c;你…题目描述 你是产品经理目前正在带领一个团队开发新的产品。不幸的是你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的所以错误的版本之后的所有版本都是错的。
假设你有 n 个版本 [1, 2, …, n]你想找出导致之后所有版本出错的第一个错误的版本。
你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。
示例:
给定 n 5并且 version 4 是第一个错误的版本。调用 isBadVersion(3) - false
调用 isBadVersion(5) - true
调用 isBadVersion(4) - true所以4 是第一个错误的版本。 解法二分查找法最快
/*** 思路1二分查找法* param n* return*/public int firstBadVersion(int n) {if(isBadVersion(1)) {return 1;}if(!isBadVersion(n)) {return -1;}int start1, endn;while(start1 end) {//注这里如果使用移位的方式就会出现122的奇特现象。测试用例n5firstBad4.目前未找到原因int mid start (end-start)/2;if(isBadVersion(mid)) {end mid;}else {start mid;}}return end;}