Skip to content

Commit 5fabdf4

Browse files
committed
add prob #397(2nd); O(logN) in time and O(1) in space
1 parent a0f6dd5 commit 5fabdf4

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

397_Integer_Replacement_2nd.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/* O(logN) in time and O(1) in space */
2+
3+
class Solution {
4+
public:
5+
int integerReplacement(int n) {
6+
int cnt = 0;
7+
while(n>1){
8+
if((n&0b1)==0){
9+
n >>= 1;
10+
++cnt;
11+
}
12+
else{
13+
if((n&0b11)==0b01){
14+
n >>= 2;
15+
cnt += 3; // reduction, divide, divide
16+
}
17+
else if(n==0b11){
18+
n >>= 1;
19+
cnt += 2; // reduction, divide
20+
}
21+
else{
22+
n >>= 2;
23+
++n;
24+
cnt += 3; // addition, divide, divide
25+
}
26+
}
27+
}
28+
return cnt;
29+
}
30+
};

0 commit comments

Comments
 (0)