zoukankan      html  css  js  c++  java
  • LeetCode(162):Find Peak Element

    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.

    题意:找到一个给定数组中的局部最大值,就是先递增增到最大值后然后递减,找到这个最大值,可能在这个数组中存在多个局部最大值。

    思路:二分查找。如果中间元素大于其相邻的后序元素,则中间元素左侧比包含一个局部最大值。如果中间元素小于其相邻后序元素,则中间元素右侧必包含一个局部最大值。直到最左边和最右边相遇。

    代码:

    public int findPeakElement(int[] nums) {
            int len = nums.length;
                if(len==1) return 0;
                int left =0,right=len-1;
                 while(left<=right){
                     if (left==right) return left;
                     int mid = (left+right) /2 ;
                     if(nums[mid] <nums[mid+1]){
                         left = mid + 1;
                     }else{
                         right = mid;
                     }
                 }
                 return -1;
        }
  • 相关阅读:
    中位数--贪心问题
    子串和子序列的区别
    unique from STL
    哈希表(1598. 文件夹操作日志搜集器)
    最短路dijkstra算法以及spfa算法
    二分+dfs 1631. 最小体力消耗路径
    java学习
    语料处理 合集
    Pytorch-创建图片的dataset和dataloader和数据过采样
    2020年9~10月
  • 原文地址:https://www.cnblogs.com/Lewisr/p/5161491.html
Copyright © 2011-2022 走看看