2
public int oddEvenJumps(int[] arr) {5
int minjmp[] = new int[len];6
int maxjmp[] = new int[len];8
TreeMap<Integer, Integer> map = new TreeMap<>();10
for (int i = len - 1; i >= 0; i--) {11
Integer minpos = map.floorKey(arr[i]);12
evjmp = (minpos != null) ? map.get(minpos) : len; // default len, to show not possible14
if (evjmp != len && (evjmp == len - 1 || maxjmp[evjmp] == len - 1))15
evjmp = len - 1; // check the last pos reachability17
Integer maxpos = map.ceilingKey(arr[i]);18
oddjmp = (maxpos != null) ? map.get(maxpos) : len;20
if (oddjmp != len && (oddjmp == len - 1 || minjmp[oddjmp] == len - 1))21
oddjmp = len - 1; // check the last pos reachability23
minjmp[i] = evjmp; // specify possible jump path, if not possible assign len24
maxjmp[i] = oddjmp; // specify possible jump path, if not possible assign len26
map.put(arr[i], i); // put the current index31
for (int i = 0; i < len - 1; i++) {33
if (maxjmp[i] == len - 1) res++;36
return res + 1; // since last position will always be the answer