1073 負二進位制數相加

2021-09-26 21:42:02 字數 1166 閱讀 8093

class solution(object):

def addnegabinary(self, arr1, arr2):

""":type arr1: list[int]

:type arr2: list[int]

:rtype: list[int]

"""d =

if arr1 == [0]:

sum1 = 0

else:

sum1 = 0

for i in range(len(arr1)):

if arr1[i] == 1:

sum1 = sum1 + (-2) ** (len(arr1) - 1 - i)

if arr2 == [0]:

sum2 = 0

else:

sum2 = 0

for i in range(len(arr2)):

if arr2[i] == 1:

sum2 = sum2 + (-2) ** (len(arr2) - 1 - i)

print(sum1,sum2)

c = sum1 + sum2

if c == 0:

return [0]

while c:

if c % -2 != 0:

d = [1] + d

#c = int(c/-2)

c= c//(-2)

else:

d = [0] + d

#c = int(c/-2)

c= c // (-2) +1

return d

給出基數為 -2 的兩個數 arr1 和 arr2,返回兩數相加的結果。

數字以 陣列形式 給出:陣列由若干 0 和 1 組成,按最高有效位到最低有效位的順序排列。例如,arr = [1,1,0,1] 表示數字 (-2)^3 + (-2)^2 + (-2)^0 = -3。陣列形式 的數字也同樣不含前導零:以 arr 為例,這意味著要麼 arr == [0],要麼 arr[0] == 1。

返回相同表示形式的 arr1 和 arr2 相加的結果。兩數的表示形式為:不含前導零、由若干 0 和 1 組成的陣列。

#c = int(c/-2)

c= c // (-2) +1 . 注意這只能這麼用。。。。。。。

1073 負二進位制數相加

題目描述 給出基數為 2 的兩個數 arr1 和 arr2,返回兩數相加的結果。數字以 陣列形式 給出 陣列由若干 0 和 1 組成,按最高有效位到最低有效位的順序排列。例如,arr 1,1,0,1 表示數字 2 3 2 2 2 0 3。陣列形式 的數字也同樣不含前導零 以 arr 為例,這意味著要...

5078 負二進位制數相加

給出基數為 2的兩個數arr1和arr2,返回兩數相加的結果。數字以陣列形式給出 陣列由若干 0 和 1 組成,按最高有效位到最低有效位的順序排列。例如,arr 1,1,0,1 表示數字 2 3 2 2 2 0 3。陣列形式的數字也同樣不含前導零 以arr為例,這意味著要麼arr 0 要麼arr 0...

leetcode 5078 負二進位制數相加 C語言

演算法思想 先用快取將列加結果儲存起來,其中可能包括 2的數字 將其中不等於1或者0的,進行進製換算 2時,進製 1 等於 1是,將本位置為1,高一位 1 void reve int arr,int len 將其中不等於1或者0的,進行進製換算 2時,進製 1 等於 1是,將本位置為1,高一位 1 ...