LeetCode(162):Find Peak Element
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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; }
以上是关于LeetCode(162):Find Peak Element的主要内容,如果未能解决你的问题,请参考以下文章
leetcode 162 Find Peak Element(二分法)
刷题-LeetCode162 Find Peak Element
LeetCode 162. Find Peak Element 20170706