397. 整数替换
解题思路
DFS深度遍历 遇到偶数, 最快的方式是除以2 遇到奇数, 则比较 +1 和 -1 的次数区别. 因为对于特定数n, 转变成1的最小次数固定, 所以可以使用map来做记录. 通过记忆加速查询
代码
const memo = new Map()
/**
* @param {number} n
* @return {number}
*/
var integerReplacement = function (n) {
if (n === 1) return 0
if (memo.has(n)) return memo.get(n)
const count = 1 + (n % 2 ? Math.min(integerReplacement(n + 1), integerReplacement(n - 1)) : integerReplacement(n / 2))
memo.set(n, count)
return count
}