zoukankan      html  css  js  c++  java
  • leetcode 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.

     题解:二分。从mid开始找,找到了就返回结果。如果mid不是,哪边比mid大,结果必然在那一边的序列里面。

    class Solution {
    public:
        int findPeakElement(vector<int>& nums) {
            int n=nums.size();
            nums.push_back(numeric_limits<int>::min());
            int l=0,r=n;
            int mid;
            while(l<r){
                mid=(l+r)/2;
                if((mid==0&&nums[mid]>nums[1])||(nums[mid-1]<nums[mid]&&nums[mid+1]<nums[mid])){
                    return mid;
                }
                else if(nums[mid-1]>nums[mid]){
                    r=mid;
                }
                else{
                    l=mid+1;
                }
            }
            return mid;
        }
    };
  • 相关阅读:
    SQL随记(四)
    一些有用的方法命令
    导航目录
    HTML中&nbsp; &ensp; &emsp; &thinsp;等6种空白空格的区别
    MyBatis学习资料
    Spring Cloud资料
    聚类算法对比
    Spark 读取HBase数据
    ZooKeeper设置ACL权限控制
    大数据工具选择
  • 原文地址:https://www.cnblogs.com/zywscq/p/5216574.html
Copyright © 2011-2022 走看看