第一个错误的版本
2018-06-17 20:53:03来源:未知 阅读 ()
你是产品经理,目前正在领导一个团队开发一个新产品。不幸的是,您的产品的最新版本没有通过质量检查。由于每个版本都是基于之前的版本开发的,所以错误版本之后的所有版本都是不好的。
假设你有 n
个版本 [1, 2, ..., n]
,你想找出第一个错误的版本,导致下面所有的错误。
你可以通过 bool isBadVersion(version)
的接口来判断版本号 version
是否在单元测试中出错。实现一个函数来查找第一个错误的版本。您应该尽量减少对 API 的调用次数。
很容易想到二分法,时间复杂度为log(N),然后写了如下代码
// Forward declaration of isBadVersion API.
bool isBadVersion(int version);
class Solution {
public:
int firstBadVersion(int n) {
int l=0;
int r=n;
int mid=0;
while(l<r)
{
mid=(l+r)/2;
if(!isBadVersion(mid))
l=mid+1;
else
r=mid;
}
return l;
}
};
然后自信满满提交,发现在过接近int范围的大数时出错了,百度下看了别人的代码才发现,
(l+r)/2在处理大数时会超出int范围,
从而修改代码
// Forward declaration of isBadVersion API.
bool isBadVersion(int version);
class Solution {
public:
int firstBadVersion(int n) {
int l=0;
int r=n;
int mid=0;
while(l<r)
{
mid=l+(r-l)/2;
if(!isBadVersion(mid))
l=mid+1;
else
r=mid;
}
return l;
}
};
成功过。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:22.C++- 继承与组合,protected访问级别
下一篇:电梯模拟C++
- C++ 构造函数 2020-06-03
- 使用错误代码对象进行C++错误处理 2020-04-10
- 一个自己实现的Vector 完善版本 2020-01-03
- leetcode之缺失的第一个正数 2019-11-16
- stl源码学习(版本2.91)--list 2019-11-05
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash