一、题目描述
给定一个长度为n的数组nums,请你找到峰值并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个所在位置即可。
1.峰值元素是指其值严格大于左右相邻值的元素。严格大于即不能有等于;
2.假设 nums[-1] = nums[n] = -\infty−∞;
3.对于所有有效的 i 都有 nums[i] != nums[i + 1];
4.你可以使用O(logN)的时间复杂度实现此问题吗;
二、输入描述
如输入[3,4,2,3,5,6,2]时,会形成两个山峰,一个是索引为1,峰值为4的山峰,另一个是索引为5,峰值为6的山峰。
如下图所示:
三、输出描述
1
四、解题思路
- 读取输入的数组nums;
- 获取数组的长度len;
- 如果数组长度为1,则直接返回0作为峰值元素的索引;
- 如果数组的首元素大于第二个元素,说明首元素即为峰值元素,返回0作为索引;
- 如果数组的尾元素大于倒数第二个元素,说明尾元素即为峰值元素,返回len-1作为索引;
- 遍历数组的第二个元素到倒数第二个元素(索引范围为1到len-2):
- 如果当前元素大于