Description#
The complement of an integer is the integer you get when you flip all the 0
's to 1
's and all the 1
's to 0
's in its binary representation.
- For example, The integer
5
is "101"
in binary and its complement is "010"
which is the integer 2
.
Given an integer num
, return its complement.
Example 1:
Input: num = 5
Output: 2
Explanation: The binary representation of 5 is 101 (no leading zero bits), and its complement is 010. So you need to output 2.
Example 2:
Input: num = 1
Output: 0
Explanation: The binary representation of 1 is 1 (no leading zero bits), and its complement is 0. So you need to output 0.
Constraints:
Note: This question is the same as 1009: https://leetcode.com/problems/complement-of-base-10-integer/
Solutions#
Solution 1#
1
2
3
4
5
6
7
8
9
10
11
12
| class Solution:
def findComplement(self, num: int) -> int:
ans = 0
find = False
for i in range(30, -1, -1):
b = num & (1 << i)
if not find and b == 0:
continue
find = True
if b == 0:
ans |= 1 << i
return ans
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| class Solution {
public int findComplement(int num) {
int ans = 0;
boolean find = false;
for (int i = 30; i >= 0; --i) {
int b = num & (1 << i);
if (!find && b == 0) {
continue;
}
find = true;
if (b == 0) {
ans |= (1 << i);
}
}
return ans;
}
}
|
1
2
3
4
5
6
7
| class Solution {
public:
int findComplement(int num) {
int full = pow(2, int(log2(num)) + 1) - 1;
return full ^ num;
}
};
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| func findComplement(num int) int {
ans := 0
find := false
for i := 30; i >= 0; i-- {
b := num & (1 << i)
if !find && b == 0 {
continue
}
find = true
if b == 0 {
ans |= (1 << i)
}
}
return ans
}
|
Solution 2#
1
2
3
| class Solution:
def findComplement(self, num: int) -> int:
return num ^ (2 ** (len(bin(num)[2:])) - 1)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| class Solution {
public:
int findComplement(int num) {
int ans = 0;
bool find = false;
for (int i = 30; i >= 0; --i) {
int b = num & (1 << i);
if (!find && b == 0) continue;
find = true;
if (b == 0) ans |= (1 << i);
}
return ans;
}
};
|