因为题目是log n的时间复杂度,所以很容易想到二分查找。主要是看区间选择的条件。注意 left = mid + 1 ; 不能是mid,否则死循环。
class Solution {
public:
int findPeakElement(vector<int>& nums) {
if(nums.size() == 1) return 0;
int mid, left(0), right(nums.size()-1);
while(left < right){
mid = (right + left) / 2 ;
cout << "left:" << left << " right" << right << "mid:" << mid << endl;
if(nums[mid] > nums[mid+1]) right = mid;
else left = mid + 1 ;
}
return left;
}
};