題目:
https://leetcode.com/problems/find-peak-element/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| class Solution { public: int findPeakElement(vector<int>& nums) { if (nums.size() == 1) return 0; int n = nums.size(); if(nums[0] > nums[1]) return 0; if(nums[n-1] > nums[n-2]) return n-1; int l = 1, r = n-2, m = -1, ans = -1; while(l <= r){ m = l + ((r-l) >> 1); if(nums[m] < nums[m-1]){ r = m-1; } else if(nums[m] < nums[m+1]){ l = m+1; } else{ ans = m; break; } } return ans; } };
|