原问题是,生产线中出现了一个残次品,导致在那之后的产品都是残次品,要求找出第一个残次品。问题中还给出了用于判断的 API isBadVersion(version) 我把问题简化了,理解为在一个数组中,前一段是正数,后一段是负数,求第一个负数的位置。奇怪的是我在 Xcode 上运行好几种情况都是成功的,可是 leetcode 中依然显示 Runtime Error,而错误提示又不是人话,所以我也搞不清究竟是哪里没符合要求。也希望如果有哪位朋友看到了这篇博客,可以指点一下究竟是哪里的问题。以下是我的代码。
vector<int> products{1, 3, 8, -90};
bool isBadVersion(int version)
{
return products[version] < 0;
}
int firstBadVersion(int n) {
if (n == 1){
return isBadVersion(n)? 1 : 0;
}
function<int(int)> find;
find = [&](int i)
{
if (i == 0 || i == 1){
return isBadVersion(1)? 1 : 2;
}
if (isBadVersion(i) && !isBadVersion(i - 1)){
return i + 1;
}
return isBadVersion(i)? find(i / 2) : find((i + n) / 2);
};
return find(n / 2);
}