分析:由题目可得,数组的边界的值是负无穷,我们需要找到其中一个波峰然后返回索引就可以了,所以我们可以找一个标杆元素,然后一直往高处找,这样就一定会找到波峰。 所以我们可以创建两个指针left和right,left指向数组的开头,right指向数组的结尾,。标杆元素就是他们的中间元素,然后判断中间元素和它右边的大小。如果标杆元素大于右边元素,说明右边是往下的,那么不一定有波峰出现,令right=mid,将范围缩小到左边;如果标杆元素小于右边元素,说明右边是往上的,那么一定会有波峰出现,那么令left=mid+1。当left=right循环结束 实现:

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型一维数组 
     * @return int整型
     */
    public int findPeakElement (int[] nums) {
        // write code here
       int left=0;
        int right=nums.length-1;
        int mid;
        while(left<right){
            mid=(left+right)>>>1;
            if(nums[mid]>nums[mid+1]){
                //右边是往下,不一定有波峰
                right=mid;
            }else{
//                 右边是往上一定能找到波峰
                left=mid+1;
            }
            
        }
        return right;//其中一个波峰
    }
}