Skip to content

Commit 75869bc

Browse files
authored
Create 397-integer-replacement.js
1 parent 6320969 commit 75869bc

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

397-integer-replacement.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/**
2+
* @param {number} n
3+
* @return {number}
4+
*/
5+
const integerReplacement = function(n, memo = {}) {
6+
if (n === 1) return 0;
7+
if (memo[n]) return memo[n];
8+
memo[n] = n % 2 === 0 ? integerReplacement(n/2, memo) + 1 : Math.min(integerReplacement(n+1, memo), integerReplacement(n-1, memo)) + 1;
9+
return memo[n];
10+
};
11+
12+
// another
13+
const integerReplacement = function(n) {
14+
let c = 0;
15+
while (n !== 1) {
16+
if ((n & 1) === 0) {
17+
n >>>= 1;
18+
} else if (n === 3 || ((n >>> 1) & 1) === 0) {
19+
--n;
20+
} else {
21+
++n;
22+
}
23+
++c;
24+
}
25+
return c;
26+
};

0 commit comments

Comments
 (0)