1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| class Solution { public int integerReplacement(int n) { Map<Integer, Integer> map = new HashMap<>(); map.put(1, 0); return dfs(map, n); }
private int dfs(Map<Integer, Integer> map, int n) { Integer replacement = map.get(n); if (replacement != null) { return replacement; }
if ((n & 1) == 0) { replacement = 1 + dfs(map, n >>> 1); } else { replacement = 1 + Math.min(dfs(map, n + 1), dfs(map, n - 1)); }
map.put(n, replacement); return replacement; } }
|