做的网站百度搜不到,沙田镇做网站,网站 栏目管理,wordpress看不到表格峰值元素是指其值大于左右相邻值的元素。
给定一个输入数组 nums#xff0c;其中 nums[i] ≠ nums[i1]#xff0c;找到峰值元素并返回其索引。
数组可能包含多个峰值#xff0c;在这种情况下#xff0c;返回任何一个峰值所在位置即可。
你可以假设 nums[-1] nums[n] -…峰值元素是指其值大于左右相邻值的元素。
给定一个输入数组 nums其中 nums[i] ≠ nums[i1]找到峰值元素并返回其索引。
数组可能包含多个峰值在这种情况下返回任何一个峰值所在位置即可。
你可以假设 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) 时间复杂度的。
思路二分查找
如果当前元素比左边的高说明右边存在山峰反之左边存在山峰
提交的代码
class Solution { public int findPeakElement(int[] nums) { return search(nums, 0, nums.length - 1); } public int search(int[] nums, int low, int high) { if (low high) //最后low与high相等所指的位置就是 一个山峰 return low; int mid (low high) / 2; if (nums[mid] nums[mid 1]) return search(nums, low, mid); return search(nums, mid 1, high); }
}