如果nums[mid]比右边大,是下坡,那么右边不一定会出现波峰

如果nums[mid]比右边大,是上坡,那么右边一定会出现波峰

那么测试用例中的 [2,4,1,2,7,8,4] 为什么会无法通过呢?

4和8都是峰值元素,返回4的索引1或者8的索引5都可以,按照以下代码返回5应该是没有问题的,但是判题可能有问题,所以提交没问题的;

int findPeakElement(vector<int>& nums) {
  int left = 0, right = nums.size() - 1;
  while(left < right){
	int mid = (right + left) / 2;
	if(nums[mid] > nums[mid + 1]) //大于右侧元素,不一定有波峰
	  right = mid;      
	else // 小于右侧元素,一定有波峰
	  left = mid + 1;        
  }
  return left;
}