题解 | #寻找峰值#
寻找峰值
https://www.nowcoder.com/practice/fcf87540c4f347bcb4cf720b5b350c76
题目其实都不难,主要是题目描述不够清晰,其中有些边界情况是合法的,比如只有一个的场景下是满足 峰值 逻辑的,由此可知,当一个元素的索引是边界值时,是需要判断峰值情况的
public int findPeakElement(int[] nums) {
// write code here
// 第一个和最后一个肯定都不是,从第二个开始判断,元素个数小于3的肯定不行
if (nums == null || nums.length == 1) {
return -1;
}
for (int i = 1; i < nums.length; i++) {
int cur = nums[i];
int pre = nums[i - 1];
int afterIndex = i + 1;
if (afterIndex == nums.length) {
if (cur > pre) {
return i;
}
} else {
int after = nums[afterIndex];
if (cur > pre && cur > after) {
return i;
}
}
}
return -1;
}