leecode 1012 十進位制整數的補碼

2021-09-12 19:00:14 字數 1373 閱讀 2243

每個非負整數 n 都有其二進位制表示。例如, 5 可以被表示為二進位制 "101",11 可以用二進位制 "1011" 表示,依此類推。注意,除 n = 0 外,任何二進位制表示中都不含前導零。

二進位制的補碼表示是將每個 1 改為 0 且每個 0 變為 1。例如,二進位制數 "101" 的二進位制補碼為 "010"。

給定十進位制數 n,返回其二進位制表示的補碼所對應的十進位制整數。

我開始的解法python,當資料大的時候,就報超出記憶體了。

class solution(object):

def bitwisecomplement(self, n):

""":type n: int

:rtype: int

"""li=

if n==0:

return 1

else:

for i in range(0,n):

if n==0:

break

if n%2==1:

else:

n=n//2

summ=0

for i in range(0,len(li)):

if li[i]==0:

li[i]=1;

else:

li[i]=0

li1=

for i in range(0,len(li)):

#summ=li[i]*(2**(i))+summ

return sum(li1)

參考別人的。【

class solution ,l=0;

int two=1,sum=0;

if(n==0)return 1;

while(n>0)

for(int i=0;i大數耗時也僅在4ms左右,我的幾十ms,於是參考此改進

取反操作。(注意python的~不是取反)

最終36 ms通過

class solution(object):

def bitwisecomplement(self, n):

""":type n: int

:rtype: int

"""li=

if n==0:

return 1

else:

while n>0:

n=n//2

summ=0

for i in range(0,len(li)):

summ=li[i]*(2**(i))+summ

return summ

注意python語法

//是向下除法

/是真正除法,可能有小數點

%取餘,3%5,3和5必須是整數

Leetcode 1012 十進位制整數的反碼

題目 每個非負整數 n 都有其二進位制表示。例如,5 可以被表示為二進位制 101 11 可以用二進位制 1011 表示,依此類推。注意,除 n 0 外,任何二進位制表示中都不含前導零。二進位制的反碼表示是將每個 1 改為 0 且每個 0 變為 1。例如,二進位制數 101 的二進位制反碼為 010...

十進位制 十六進製制

把十進位制整數轉換為十六進製制,格式為0x開頭,10 15由大寫字母a f表示。input 每行乙個整數x,0 x 2 31。output 每行輸出對應的八位十六進製制整數,包括前導0。sample input 0 1023 sample output 0x00000000 0x000003ff 水...

彙編實驗 十六進製制轉成十進位制以及十進位制轉十六進製制

十六進製制轉成十進位制 datas segment dbuf dw 3039h 16進製制數3039h為10進製數12345 dval db 5 dup 存放轉換後的資料 dlen dbuf datas ends stacks segment 此處輸入堆疊段 stacks ends codes se...