题解 | #寻找峰值#

寻找峰值

https://www.nowcoder.com/practice/fcf87540c4f347bcb4cf720b5b350c76?tpId=295&tqId=23256&ru=%2Fexam%2Foj&qru=%2Fta%2Fformat-top101%2Fquestion-ranking&sourceUrl=%2Fexam%2Foj

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型vector 
     * @return int整型
     */
    int findPeakElement(vector<int>& nums) {
        // write code here
        int n = nums.size();
         int left = 0, right = n - 1;  //左闭右闭
         //left 左边的一定比left小
         //right右边的一定比right小
         //所以left和right重合之后,一定是一个峰值
         while(left < right) {
            int mid = (left + right) / 2;
            if (nums[mid + 1] > nums[mid]) {  //之所以选择mid + 1和mid比,是因为mid是向下取整,mid+1不会
			  //越界
                left = mid + 1;  //如果mid右边的比mid大,那么右边可能存在一个峰值,但是mid本身肯定不是峰
			  //值,所以left = mid + 1;
            } else right = mid;  //如果mid右边比mid小,那么mid本身可能是个峰值,right = mid (注意是闭区
		   //间)
         }
         return left;
    }
};

全部评论

相关推荐

02-14 12:40
门头沟学院 Java
程序员花海:1.面试要求必须Java笔试不一定 2.难度对等秋招 远超于日常实习是因为同一批次且转正很多 竞争压力大 3.第一个加点指标,上线了就把接口性能加上去 使用本地缓存这个不算亮点 只是技术选型,要把为什么采用这个和背后的思考写出来而不是单纯堆叠技术没意义 4.八股要一直看 很容易忘记 5.拼团交易这个老问题 堆积技术 另外建议你把奖项合并到教育背景 没必要拆出来放最后
我的简历长这样
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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