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

    要求算法:logn复杂度

    因为num[i] ≠ num[i+1],可以想象数组是一个几个驼峰链接成的曲线,利用二分搜索找驼峰的顶点。

    int findPeakElement(vector<int>& nums) {
            if(nums.size()==0)return 0;
            int left = 0;
            int right = nums.size()-1;
            while(left<right){
                int mid = (left+right)/2;
                if(nums[mid]<nums[mid+1])
                    left = mid+1;
                else
                    right = mid;
            }
            return left;
        }
  • 相关阅读:
    类的组合
    类的继承和派生
    面向对象编程
    正则表达式
    sys模块 logging模块 序列化模块
    time 模块,random模块,os模块
    递归函数
    interface有没有继承Object
    UTF-8和GBK的区别
    九皇后
  • 原文地址:https://www.cnblogs.com/li-daphne/p/5567003.html
Copyright © 2011-2022 走看看