// Forward declaration of queryAPI.
// int query(int x);
// return int means nums[x].
class Solution {
public:
int findPeakElement(int n) {
int l = 0, r = n - 1;
while (l < r)
{
int mid = l + r >> 1; //二分查找
if (query(mid) > query(mid + 1)) r = mid; //左大于右,则峰值一定在左边
else l = mid + 1;
}
return l;
}
};
为啥这样写不对呢?
如果用这种形式的话,需要与mid左边的元素作比较,可以把循环内改成这样: