數字的補數(LeetCode)

2021-09-03 07:15:56 字數 1036 閱讀 8333

給定乙個正整數,輸出它的補數。補數是對該數的二進位制表示取反。

注意:

給定的整數保證在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的二進...