1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| class Solution { public int findPeakElement(int[] nums) { int n = nums.length; int left = 0, right = n - 1, ans = -1; while (left <= right) { int mid = (left + right) / 2; if (compare(nums, mid - 1, mid) < 0 && compare(nums, mid, mid + 1) > 0) { ans = mid; break; } if (compare(nums, mid, mid + 1) < 0) { left = mid + 1; } else { right = mid - 1; } } return ans; }
public int[] get(int[] nums, int idx) { if (idx == -1 || idx == nums.length) { return new int[]{0, 0}; } return new int[]{1, nums[idx]}; }
public int compare(int[] nums, int idx1, int idx2) { int[] num1 = get(nums, idx1); int[] num2 = get(nums, idx2); if (num1[0] != num2[0]) { return num1[0] > num2[0] ? 1 : -1; } if (num1[1] == num2[1]) { return 0; } return num1[1] > num2[1] ? 1 : -1; } }
作者:LeetCode-Solution 链接:https: 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
|