解題思路
二分查找的經典問題:“尋找有序序列中第一個滿足某條件的元素的位置”
時間複雜度:O(logn)。
空間複雜度:O(1)。
代碼
// Forward declaration of isBadVersion API.
bool isBadVersion(int version);
class Solution {
public:
int firstBadVersion(int n) {
int pLeft = 1, pRight = n;
while (pLeft < pRight)
{
int mid = pLeft + (pRight - pLeft) / 2;
if (isBadVersion(mid)) {
pRight = mid;
}
else
{
pLeft = mid + 1;
}
}
return pLeft;
}
};