File tree 1 file changed +6
-31
lines changed
scripts/algorithms/C/Complement of Base 10 Integer 1 file changed +6
-31
lines changed Original file line number Diff line number Diff line change 1
- // Runtime: 3 ms (Top 37.98%) | Memory: 5.9 MB (Top 76.79%)
2
-
3
1
class Solution {
4
2
public:
5
- int bitwiseComplement (int n) {
6
-
7
- // -------Exceptional Case---------------
8
- if (n == 0 ){
9
- return 1 ;
3
+ int bitwiseComplement (int num) {
4
+ // base case
5
+ if (num == 0 ) return 1 ;
6
+ unsigned mask = ~0 ;
7
+ while ( mask & num ) mask = mask << 1 ;
8
+ return ~num ^ mask;
10
9
}
11
-
12
- // -------Normal Case--------------------
13
- int testNumber = n;
14
- int rightShift = 0 ; // count of length on number in binary 5 == 101 => 3
15
-
16
- // counting
17
- while (testNumber != 0 ){
18
- testNumber = testNumber >> 1 ;
19
- rightShift++;
20
- }
21
-
22
- // generating mask
23
- int mask = 0 ;
24
- while (rightShift != 0 ){
25
- mask = mask << 1 ;
26
- mask = mask | 1 ;
27
- rightShift--;
28
- }
29
-
30
- // complementing
31
- int temp = ~n;
32
- int result = temp & mask;
33
- return result;
34
- }
35
10
};
You can’t perform that action at this time.
0 commit comments