思路:
二分查找依旧不熟练
public class Solution {
public int findPeakElement(int[] nums) {
int n=nums.length;
if(n==1)
{
return 0;
}
int leftIndex=0;
int rightIndex=nums.length-1;
int middle;
while(leftIndex<rightIndex)
{
middle=(leftIndex+rightIndex)/2;
if(middle-1<0)
{
if(nums[middle]>nums[middle+1])
{
return middle;
}
else
{
return middle+1;
}
}
else if(middle+1>=n)
{
if(nums[middle]>nums[middle-1])
{
return middle;
}
else
{
return middle-1;
}
}
if(nums[middle-1]<nums[middle]&&nums[middle]>nums[middle+1])
{
return middle;
}
if(nums[middle-1]<nums[middle])
{
leftIndex=middle+1;
continue;
}
else if(nums[middle]>nums[middle+1])
{
rightIndex=middle-1;
continue;
}
else
{
leftIndex=middle+1;
}
}
return leftIndex;
}
}
本文介绍了一种使用二分查找算法寻找数组中峰元素的方法。峰元素是指那些大于其邻居的元素,在边界上则只需比另一个方向上的元素大即可。文章通过一个具体的Java实现示例,详细解释了如何逐步缩小搜索范围直至找到峰元素。
1404

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



