-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnumber-complement_476.py
40 lines (29 loc) · 1.18 KB
/
number-complement_476.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 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.
# ---------------------------------------Runtime 46 ms Beats 61.33% Memory 16.2 MB Beats 94.83%---------------------------------------
# Time complexity O(n)
class Solution:
def findComplement(self, num: int) -> int:
bins: list = list(bin(num)[2:])
for i, v in enumerate(bins):
if v == "0":
bins[i] = "1"
else:
bins[i] = "0"
return int("".join(bins), 2)
# Solution @xhon9
class Solution:
def findComplement(self, num: int) -> int:
return num ^ (2 ** (len(bin(num)[2:])) - 1)