ID | Title | Difficulty | |
---|---|---|---|
Loading... |
852. Peak Index in a Mountain Array
Medium
LeetCode
Array, Binary Search
Problem
Let’s call an array arr a mountain if the following properties hold:
arr.length >= 3 There exists some i with 0 < i < arr.length - 1 such that: arr[0] < arr[1] < … arr[i-1] < arr[i] arr[i] > arr[i+1] > … > arr[arr.length - 1] Given an integer array arr that is guaranteed to be a mountain, return any i such that arr[0] < arr[1] < … arr[i - 1] < arr[i] > arr[i + 1] > … > arr[arr.length - 1].
Example 1:
Input: arr = [0,1,0]
Output: 1
Example 2:
Input: arr = [0,2,1,0]
Output: 1
Example 3:
Input: arr = [0,10,5,2]
Output: 1
Example 4:
Input: arr = [3,4,5,1]
Output: 2
Example 5:
Input: arr = [24,69,100,99,79,78,67,36,26,19]
Output: 2
Code
class Solution {
public int peakIndexInMountainArray(int[] arr) {
int left = 0;
int right = arr.length - 1;
while (left + 1 < right) {
int mid = (left + right) / 2;
if (arr[mid] > arr[mid - 1] && arr[mid] > arr[mid + 1]) return mid;
if (arr[mid] > arr[mid - 1]) {
left = mid;
} else {
right = mid;
}
}
if (arr[left] > arr[left - 1] && arr[left] > arr[left + 1]) return left;
return right;
}
}
class Solution {
public int peakIndexInMountainArray(int[] arr) {
for (int i = 1; i < arr.length - 1; i++) {
if (arr[i] > arr[i - 1] && arr[i] > arr[i + 1]) return i;
}
return -1;
}
}
按 <- 键看上一题!
849. Maximize Distance to Closest Person
按 -> 键看下一题!
853. Car Fleet