Python 3.x 两个数组之和-Python
两个随机整数数组/列表分别作为大小为N和M的ARR1和ARR2给出。两个数组/列表都包含从0到9的数字(即每个索引中都有一位整数)。这里的想法是将每个数组/列表表示为数字N和M的整数。 您需要找到两个输入数组/列表的总和,将它们视为两个整数,并将结果放入另一个数组/列表,即输出数组/列表在每个索引处也只包含一位数字。 注意: 尺寸N和M可以不同 输出数组/列表(所有0的)已作为函数参数提供。它的大小总是比较大的数组/列表的大小大一倍。如果没有进位,则在第0个索引处放置0 无需打印输出数组/列表的元素Python 3.x 两个数组之和-Python,python-3.x,array-sum,Python 3.x,Array Sum,两个随机整数数组/列表分别作为大小为N和M的ARR1和ARR2给出。两个数组/列表都包含从0到9的数字(即每个索引中都有一位整数)。这里的想法是将每个数组/列表表示为数字N和M的整数。 您需要找到两个输入数组/列表的总和,将它们视为两个整数,并将结果放入另一个数组/列表,即输出数组/列表在每个索引处也只包含一位数字。 注意: 尺寸N和M可以不同 输出数组/列表(所有0的)已作为函数参数提供。它的大小总是比较大的数组/列表的大小大一倍。如果没有进位,则在第0个索引处放置0 无需打印输出数组/列表的
def sumOfTwoArrays(arr1, n, arr2, m, output) :
#Your code goes here
#Taking Input Using Fast I/O
def takeInput() :
n = int(stdin.readline().rstrip())
if n == 0 :
return list(), 0
arr = list(map(int, stdin.readline().rstrip().split(" ")))
return arr, n
#to print the array/list
def printList(arr, n) :
for i in range(n) :
print(arr[i], end = " ")
print()
#main
t = int(stdin.readline().rstrip())
while t > 0 :
arr1, n = takeInput()
arr2, m = takeInput()
outputSize = (1 + max(n, m))
output = outputSize * [0]
sumOfTwoArrays(arr1, n, arr2, m, output)
printList(output, outputSize)
t -= 1
样本输入:
一,
三,
6 2 4
三,
7 5 6
样本输出:
1 3 8 0此问题可通过以下简单函数解决: (注意-如果需要满足“奇怪要求”-“如果没有进位,则将0放在第0个索引处”。这只是一个小练习,您可以对返回结果的最后一行进行调整。)
作为后续,我不认为
n
、m
和output
需要成为sumOfTwoArrays
函数的参数。请不要只发布作业/考试问题而不亲自解决。如果答案很好,可以接受,您能表示接受吗?
def sum_two_array(L1, L2):
carry, total = 0, 0
m, n = len(L1), len(L2)
k = max(m, n)
result = [0] + [0] * k # add +1
for i in range(1, k+1):
a = L1[m-i] if m - i >= 0 else 0
b = L2[n-i] if n - i >= 0 else 0
total = a + b + carry
result[k-i + 1] = total % 10
carry = total // 10
if carry > 0: result[0] = carry
return result if result[0] != 0 else result[1:]
if __name__ == '__main__':
L1 = [6, 4, 4]
L2 = [7, 5, 6]
print(sum_two_array(L1, L2)) # [1, 4, 0, 0]
print(sum_two_array([6, 2, 4], [7, 5, 6])) # [1, 3, 8, 0]
print(sum_two_array([1, 2, 4], [8, 0])) # [2, 0, 4]