5078 負二進位制數相加

2021-09-24 02:37:00 字數 1444 閱讀 5106

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

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

返回相同表示形式的arr1arr2相加的結果。兩數的表示形式為:不含前導零、由若干 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 <= 10001 <= arr2.length <= 1000arr1arr2都不含前導零

arr1[i]01arr2[i]01

先求和,再進行進製轉換。

參考: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 為例,這意味著要...