题解 | #寻找峰值#

寻找峰值

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

二分的运用:很是巧妙

class Solution {
public:
    int findPeakElement(vector<int>& nums) {
      if (nums.size() == 1) {
        return 0;
      }
      
      int left = 0, right = nums.size() - 1;
      int mid = (left + right) / 2;
      
      // left 指向的值一定大于前一位
      // right指向的值一定大于后一位
      // 两者重合时就是峰值
      while (left < right) {
        if (nums[mid] < nums[mid + 1]) {
          left = mid + 1;
        } else {
          right = mid;
        }
        mid = (left + right) / 2;
      }
      
      return right;
    }
};
全部评论

相关推荐

头像
02-26 13:58
门头沟学院 Java
北城_阿亮:把八股背一背,包装一下实习经历项目经历,要是有心思考证就考一考,然后把别人的项目爬到自己github上,包装到简历里,什么三个月?一个月!
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务