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.
solution1
public int findPeakElement(int[] nums) {
int len = nums.length;
if(len == 1) return 0;
int max = nums[0];
int index = 0;
for(int i=1;i<len;i++){
if(nums[i]>max){
max = nums[i];
index = i;
}
}
return index;
}
solution2
public class Solution {
public int findPeakElement(int[] nums) {
if(nums.length == 1) return 0;
for(int i=1;i<nums.length;i++){
if(nums[i]<nums[i-1]){
return i-1;
}
}
return nums.length-1;
}
}
solution3
public int findPeakElement(int[] nums) {
if(nums.length ==1) return 0;
int low = 0;
int high = nums.length-1;
while(low < high){
int mid = (low + high)/2;
if(nums[mid]<nums[mid+1])
low = mid+1;
else
high = mid;
}
return low;
}

本文介绍了三种不同的方法来找到给定数组中的峰值元素及其索引。这些方法包括线性扫描、二分查找和直接比较最大值。每种方法都针对不同情况提供了效率和复杂性的分析。
4279

被折叠的 条评论
为什么被折叠?



