給出基數為-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 組成的陣列。示例:
輸入:arr1 = [1,1,1,1,1], arr2 = [1,0,1]輸出:[1,0,0,0,0]解釋:arr1 表示 11,arr2 表示 5,輸出表示 16 。
1 <= arr1.length <= 1000
1 <= arr2.length <= 1000
arr1
和arr2
都不含前導零
arr1[i]
為0
或1
arr2[i]
為0
或1
先求和,再進行進製轉換。
參考:1017. 負二進位制轉換
import math
class solution:
def addnegabinary(self, arr1: list[int], arr2: list[int]) -> list[int]:
value = self.count(arr1)+self.count(arr2)
ls =
while value :
value = - (value // 2)
return ls[::-1] if ls else [0]
def count(self, arr):
value = 0
for i, ch in enumerate(arr[::-1]):
if int(ch) == 1:
value += int(math.pow(-2, i))
else:
continue
return value
leetcode 5078 負二進位制數相加 C語言
演算法思想 先用快取將列加結果儲存起來,其中可能包括 2的數字 將其中不等於1或者0的,進行進製換算 2時,進製 1 等於 1是,將本位置為1,高一位 1 void reve int arr,int len 將其中不等於1或者0的,進行進製換算 2時,進製 1 等於 1是,將本位置為1,高一位 1 ...
1073 負二進位制數相加
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 ra...
1073 負二進位制數相加
題目描述 給出基數為 2 的兩個數 arr1 和 arr2,返回兩數相加的結果。數字以 陣列形式 給出 陣列由若干 0 和 1 組成,按最高有效位到最低有效位的順序排列。例如,arr 1,1,0,1 表示數字 2 3 2 2 2 0 3。陣列形式 的數字也同樣不含前導零 以 arr 為例,這意味著要...