162. Find Peak Element

A peak element is an element that is greater than its neighbors.

Given an input array where num[i] ≠ num[i+1], find a peak element and return its index.

The array may contain multiple peaks, in that case return the index to any one of the peaks is fine.

You may imagine that num[-1] = num[n] = -∞.

For example, in array [1, 2, 3, 1], 3 is a peak element and your function should return the index number 2.

一刷
题解:由于左右边界都是洼地。我们最终输出lo所在位置。所以,当找到一个点大于其左邻点,将lo置为该点。否则,将hi置为该邻点(不能再用lo,避免不能跳出循环,因为只要找到一个满足条件的点就可以)。

public class Solution {
    public int findPeakElement(int[] nums) {
        int lo = 0, hi = nums.length-1;
        while(lo<hi){
            int mid1 = (lo+hi)/2;
            int mid2 = mid1+1;
            if(nums[mid1]<nums[mid2]) lo = mid2;
            else hi = mid1;
        }
        return lo;
    }
}

二刷
思路同上

public class Solution {
    public int findPeakElement(int[] nums) {
        int lo = 0, hi = nums.length-1;
        while(lo<hi){
            int mid = lo + (hi-lo)/2;
            int mid2 = mid+1;
            if(nums[mid]>nums[mid2]) hi = mid;
            else lo = mid2;
        }
        return lo;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • A peak element is an element that is greater than its nei...
    matrxyz阅读 243评论 0 0
  • A peak element is an element that is greater than its nei...
    exialym阅读 165评论 0 0
  • 我不得不承认,放下一颗控制的心,很难。 受不了孩子一颗心都扑在游戏上,作业没完成,寻找任何机会,玩游戏及与之有关的...
    naionei阅读 321评论 0 0
  • 关注烦恼,必然绕不开一个话题,那就是养娃的烦恼。 孩子当然带给我们欢乐,但也伴随着一大堆烦恼。从孕育开始,烦恼和焦...
    小白大亮阅读 285评论 0 1
  • 最近在看斯宾塞的书,其中有一句话引起我的共鸣:让一个不懂教育的人去培养孩子,就好比让一个不懂数字的人去做生意,多么...
    刘小担阅读 349评论 0 1