给出了一个任务。使用一个小阵列,它可以快速、正确地运行。但当射程达到100000时,需要13分钟。你能告诉我怎么修吗?
任务:
您将得到一个由整数组成的数组a−1,0和1。该数组的一个切片是任何一对整数(p,q),使得0≤ P≤ q<n。您的任务是找到其元素产生非负和的最长片段。编写一个函数:def solution(a),给定一个长度为n的数组a,该数组仅由值组成−1,0,1,返回产生非负和的a的最长切片的长度。如果没有这样的切片,则函数应返回0。例如,给定a=[−1.−1, 1, −1, 1, 0, 1, −1.−1] ,函数应该返回7,因为从第二个位置开始并在第八个位置结束的切片是具有非负和的最长切片。再举一个例子,给定a=[1,1,−1.−1.−1.−1.−1,1,1]函数应该返回4:数组a的前四个元素和后四个元素都是最长的有效片。为以下假设编写一个有效的算法:n是[2..100000]范围内的整数;数组a的每个元素都是范围内的整数[−1..1].
我能解决的问题
from timeit import default_timer as timer
start = timer()
Array = [-1, -1, 1, -1, 1, 0, 1, -1, -1]
# Array = [1, 1, -1, -1, -1, -1, -1, 1, 1]
Rand_Array = []
for i in range(0, 10000):
Rand_Array.append(round(random.random() * 2 - 1.5))
print(Rand_Array)
def solutionA(A):
LEN = len(A)
max_len = 0
for i1 in range(0, LEN - 2):
SUM = A[i1]
for i2 in range(i1 + 1, LEN - 1):
SUM += A[i2]
if SUM >= 0:
max_len = max(max_len, i2 - i1 + 1)
return max_len
print(solutionA(Rand_Array))
end = timer()
print("Time", end - start)
我们能通过多重处理做些什么吗?
暂无答案!
目前还没有任何答案,快来回答吧!