题解 | #寻找峰值#

寻找峰值

https://www.nowcoder.com/practice/fcf87540c4f347bcb4cf720b5b350c76

如果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;
}

全部评论

相关推荐

12-14 11:43
黑龙江大学 Java
用微笑面对困难:确实比较烂,可以这么修改:加上大学的qs排名,然后大学简介要写一些,然后硕士大学加大加粗,科研经历第一句话都写上在复旦大学时,主要负责xxxx,简历左上角把学校logo写上,建议用复旦大学的简历模板
点赞 评论 收藏
分享
程序员牛肉:继续沉淀吧同学,你这就是纯纯的流水线产品。 差不多的学历+两个烂大街项目。自身学历又不行,现在找啥实习呢。有点太浮躁了。多花点心思搞搞ai,开源和八股。这比你这段时间捣鼓一段小厂实习要好得多;
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务