class Solution {
public int findPeakElement(int[] array) {
int result = -1;
int left = 0;
int right = array.length - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (compare(array, mid - 1, mid) == -1 && compare(array, mid, mid + 1) == 1) {
result = mid;
break;
}
if (compare(array, mid, mid + 1) == -1) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return result;
}
public int compare(int[] nums, int num1, int num2) {
int[] array1;
int[] array2;
if (num1 == -1 || num1 == nums.length) {
array1 = new int[]{0, 0};
} else {
array1 = new int[]{1, nums[num1]};
}
if (num2 == -1 || num2 == nums.length) {
array2 = new int[]{0, 0};
} else {
array2 = new int[]{1, nums[num2]};
}
if (array1[0] != array2[0]) {
return array1[0] > array2[0] ? 1 : -1;
}
if (array1[1] == array2[1]) {
return 0;
}
return array1[1] > array2[1] ? 1 : -1;
}
}
力扣 162.寻找峰值
最新推荐文章于 2024-06-05 11:13:58 发布