因爲題目是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;
}
};