题目
题解
- 只需找到大于后面一位元素的位置即可
- 将数组中的任何给定序列视为交替的升序和降序序列。
代码
// class Solution {
// public:
// int findPeakElement(vector<int>& nums) {
// for (int i = 0; i < nums.size() - 1; i++) {
// if (nums[i] > nums[i + 1])
// return i;
// }
// return nums.size() - 1;
// }
// };
class Solution {
public:
int findPeakElement(vector<int>& nums) {
int l = 0, r = nums.size() - 1;
while (l < r) {
int mid = (l + r) / 2;
if (nums[mid] > nums[mid + 1])
r = mid;
else
l = mid + 1;
}
return l;
}
};