2
public int getKth(int lo, int hi, int k) {5
int[][] powerArr = new int[hi - lo + 1][2];7
Map<Integer, Integer> memo = new HashMap<>();8
for (int i = lo; i <= hi; i++) powerArr[p++] = new int[] {i, getPower(i, memo)};10
Arrays.sort(powerArr, (a1, a2) -> a1[1] - a2[1] == 0 ? a1[0] - a2[0] : a1[1] - a2[1]);12
return powerArr[k - 1][0];15
private int getPower(int i, Map<Integer, Integer> memo) {16
if (memo.containsKey(i)) return memo.get(i);20
int power = 1 + (i % 2 == 0 ? getPower(i / 2, memo) : getPower(i * 3 + 1, memo));