我正在研究在线挑战问题,可以用蛮力解决此问题,但是当长度变得很大时,运行时间将大大增加,我相信必须有更好的算法来解决此问题,但是这只是我无法控制的。我感谢任何很棒的主意。
答案 0 :(得分:0)
如果允许您使用numpy
,则可以使用numpy.cumsum
方法来查找存储区sum(A[:i])
,sum(A[i:])
,sum(B[:i])
和{{1} }在四个不同数组中的值,如下所示
sum(B[i:])
现在您要做的就是创建import numpy as np
A = [] # Array A
B = [] # Array B
A_start_to_i = np.cumsum(A) # A_start_to_i[i] = sum(A[:i])
A.reverse() # Reverse the order
A_i_to_end = np.cumsum(A) # A_i_to_end[i] = sum(A[i:])
B_start_to_i = np.cumsum(B) # B_start_to_i[i] = sum(B[:i])
B.reverse() # Reverse the order
B_i_to_end = np.cumsum(B) # B_i_to_end = sum(B[i:])
和sum(A[:i], B[i:])
并找到具有最小元素的索引。
sum(B[:i], A[i:])