题解 | #寻找峰值#

寻找峰值

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

写的时候忽略了题目中的相邻不相等条件,
就写了一个有相邻有相同元素也能找到波峰的二分查找(话说两边都覆盖了还算不算...)

import java.util.*;


public class Solution {

    public int findPeakElement (int[] nums) {
        return binarySearch(nums, 0, nums.length);
    }

    public int binarySearch(int[] nums, int left, int right) {
        if(left >= right) return -1;//递归写法和循环有点不一样的是, 如果用左闭右开, 那么left是要<=right的
        int mid = left + (right - left) / 2;
        int leftVal = Integer.MIN_VALUE;
        int rightVal = Integer.MIN_VALUE;
        if(mid - 1 > -1) {
            leftVal = nums[mid - 1];
        }
        if(mid + 1 < nums.length) {
            rightVal = nums[mid + 1];
        }

        if(leftVal < nums[mid] && nums[mid] > rightVal) {
            return mid;
        } else {
            int res = binarySearch(nums, left, mid);
            if(res > -1) return res;
            else return binarySearch(nums, mid+1, right);
        }
    }
}
#Java求职##Java找工作#
全部评论

相关推荐

Cherrycola01:0实习 0项目 约等于啥也没有啊 哥们儿这简历认真的吗
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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