Odd Even Jump
You are given an integer array arr. From some starting index, you can make a series of jumps. The 1st, 3rd, 5th, ... jumps in the series are called odd-numbered jumps, and the 2nd, 4th, 6th, ... jumps in the series are called even-numbered jumps. Note that the jumps are numbered, not the indices.
You may jump forward from index i to index j with i < j using the following rules:
- During odd-numbered jumps (jumps
1,3,5, ...), jump to the indexjsuch thatarr[i] <= arr[j]andarr[j]is the smallest possible value. If there are multiple such indicesj, you can only jump to the smallest such indexj. - During even-numbered jumps (jumps
2,4,6, ...), jump to the indexjsuch thatarr[i] >= arr[j]andarr[j]is the largest possible value. If there are multiple such indicesj, you can only jump to the smallest such indexj. - It may be the case that for some index
i, there are no legal jumps.
A starting index is good if, starting from that index, you can reach the end of the array at index arr.length - 1 by jumping some number of times, possibly 0 or more than once.
Return the number of good starting indices.
Example 1
Input
arr = [10,13,12,14,15]Output
2Only starting indices 3 and 4 can reach the end of the array.
Example 2
Input
arr = [2,3,1,1,4]Output
3The good starting indices are 1, 3, and 4, so there are 3 in total.
Constraints
- 1 <= arr.length <= 2 * 10^4
- 0 <= arr[i] < 10^5