給定乙個正整數,輸出它的補數。補數是對該數的二進位制表示取反。
注意:
給定的整數保證在32位帶符號整數的範圍內。
你可以假定二進位制數不包含前導零位。
示例 1:
輸入:5輸出:2解釋:5的二進位制表示為101(沒有前導零位),其補數為010。所以你需要輸出2。示例 2:
輸入:1輸出:0解釋:1的二進位制表示為1(沒有前導零位),其補數為0。所以你需要輸出0。class solution:
def findcomplement(self, num):
""":type num: int
:rtype: int
"""n = num
ss = ""
while(n>=1):
if(n/2!=int(n/2)):
ss = ss + "1"
else:
ss = ss + "0"
n = int(n/2)
#先求出n的二進位制形式,此處用的是求餘法。除二餘一的話,在該位置有一,否則就是零
j = 0
k = 0
#通過n的二進位制形式求補碼
for i in ss:
if(i=='0'):
j = j + 2**k
k += 1
return j
膜拜一下大佬的解法
class solution:
def findcomplement(self, num):
:type num: int
:rtype : int
n = 2
while n <= num:
n <<= 1 #位運算
return n-1-num
LeetCode 476 數字的補數
給定乙個正整數,輸出它的補數。補數是對該數的二進位制表示取反。注意 給定的整數保證在32位帶符號整數的範圍內。你可以假定二進位制數不包含前導零位。示例 1 輸入 5 輸出 2 解釋 5的二進位制表示為101 沒有前導零位 其補數為010。所以你需要輸出2。示例 2 輸入 1 輸出 0 解釋 1的二進...
leetcode 476 數字的補數
給定乙個正整數,輸出它的補數。補數是對該數的二進位制表示取反。注意 給定的整數保證在32位帶符號整數的範圍內。你可以假定二進位制數不包含前導零位。示例 1 輸入 5輸出 2解釋 5的二進位制表示為101 沒有前導零位 其補數為010。所以你需要輸出2。示例 2 輸入 1輸出 0解釋 1的二進位制表示...
Leetcode 476 數字的補數
給定乙個正整數,輸出它的補數。補數是對該數的二進位制表示取反。注意 給定的整數保證在32位帶符號整數的範圍內。你可以假定二進位制數不包含前導零位。示例 1 輸入 5 輸出 2 解釋 5的二進位制表示為101 沒有前導零位 其補數為010。所以你需要輸出2。示例 2 輸入 1 輸出 0 解釋 1的二進...