[LeetCode] 397. Integer Replacement

题意是给一个整数,给了如下运算规则,如果是偶数可以除以2;如果是奇数可以+1或-1。问最少需要几步操作可以得到1。

这题的tag给的是位运算,但是我没有实现出来。有哪位朋友实现了JS位运算的做法,欢迎留言。这题我只会用递归实现。

时间O(n)

空间O(n)

 1 /**
 2  * @param {number} n
 3  * @return {number}
 4  */
 5 var integerReplacement = function(n, memo = {}) {
 6     if (n === 1) return 0;
 7     if (memo[n]) return memo[n];
 8     memo[n] =
 9         n % 2 === 0
10             ? integerReplacement(n / 2, memo) + 1
11             : Math.min(integerReplacement(n + 1, memo), integerReplacement(n - 1, memo)) + 1;
12     return memo[n];
13 };

猜你喜欢

转载自www.cnblogs.com/aaronliu1991/p/11713050.html
今日推荐