题解 | #寻找峰值#

寻找峰值

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

#include <algorithm>
#include <vector>
class Solution {
public:

    int findPeakElement(vector<int>& nums) {
        int n = nums.size();
        if(n == 1) return 0;
        if(n == 0) return -1;
        if(nums[0] > nums[1] ) return 0;
        if(nums[n-1] > nums[n -2]) return n -1; //所以如果是两个数的话,一定会退出,并且当两端出现局部大的元素时,也会直接返回
        
        for(int i = 1, j = n -2; i <= j; i++,j--){//因为两端的元素已经检查过了,所以都从第二个出发
            if((nums[i] > nums[i - 1] && nums[i] > nums[i + 1] ))
            return i;
            if(nums[j] > nums[j -1] && nums[j] > nums[j + 1])return j;
            
        }
        return 0;
 
    }
};

全部评论

相关推荐

11-17 23:00
南昌大学 Java
我要娶个什么名:10元一天 0元提成😂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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