• LeetCode162 寻找峰值


    峰值元素是指其值大于左右相邻值的元素。

    给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。

    数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。

    你可以假设 nums[-1] = nums[n] = -∞

    示例 1:

    输入: nums = [1,2,3,1]
    输出: 2
    解释: 3 是峰值元素,你的函数应该返回其索引 2。

    示例 2:

    输入: nums = [1,2,1,3,5,6,4]
    输出: 1 或 5 
    解释: 你的函数可以返回索引 1,其峰值元素为 2;
         或者返回索引 5, 其峰值元素为 6。
    

    说明:

    你的解法应该是 O(logN) 时间复杂度的。

     


     

     

    /*
    算法思想:
        二分查找模板 II 的变式应用。
        由于只是需要找到任意一个峰值,那么我们在确定二分查找折半后中间那个元素后,和紧跟的那个元素比较下大小,如果大于,则说明峰值在前面,如果小于,则说明峰值在后面。这样就可以找到一个峰值了。
    */
    //算法实现:
    
    class Solution {
    public:
        int findPeakElement(vector<int>& nums) {
            int left = 0, right = nums.size() - 1;
            while (left < right) {
                int mid = left + (right - left) / 2;
                if (nums[mid] < nums[mid + 1])  //如果小于,则说明峰值在后面
                    left = mid + 1;
                else                            //如果大于,则说明峰值在前面
                    right = mid;
            }
            return right;
        }
    };
  • 相关阅读:
    搭建docker registry私有镜像仓库
    安装go client调用Kubernetes API
    Kubernetes搭建Hadoop服务
    Kubernetes部署Kafka集群
    Kubernetes使用StorageClass动态生成NFS类型的PV
    Linux配置网络服务
    Kubernetes设置命名空间
    Kubernetes的简单Demo
    docker操作的一些例子
    MySQL的一些基本概念
  • 原文地址:https://www.cnblogs.com/parzulpan/p/10071502.html
Copyright © 2020-2023  润新知