用二分法找数,left左边的一个数比left小,right右边的一个数比right大, 最后left与right重叠时 就是一个目标 树
public class Solution {
public int findPeakElement(int[] nums) {
int left = 0;
int right = nums.length - 1;
while (left < right)
{
int mid = (left + right) / 2;
if (nums[mid] < nums[mid + 1])
{
left = mid + 1;
}
else // nums[mid] > nums[mid - 1]
{
right = mid;
}
}
return left;
}
}
如果nums[0]>nums[1] 返回nums[0] 如果nums[0]<nums[1] 判断nums[1]是否小于nums[2] 如果不小于 则nums[2]>nums[1] 依次类推直到找到一个nums[i]>nums[i+1] 此时nums[i]>nums[i-1] i即是所找的数
public class Solution {
public int findPeakElement(int[] nums) {
for (int i = 0; i < nums.length - 1; i++)
{
if (nums[i] > nums[i + 1])
{
return i;
}
}
return nums.length- 1;
}
}