Я пытался найти подмассивы из заданного, которые содержат элементы максимальной суммы, чем любой другой подмассив.
Ниже функция имеет параметр в качестве входа a
, и необходимо вернуть вывод. Подмассивов может быть несколько, так как их максимальная сумма может быть равна. Код, похоже, не работал должным образом.
def max_sum_subarray(a):
N, sub_sum, max_sum, subArrays = len(a), 0, 0, {}
p,q=0,0 #starting and ending indices of a max sub arr
for i in range(N):
q=i
sub_sum+=a[i]
if(a[i]<0):
q-=1
if(sub_sum>=max_sum):
if(sub_sum>max_sum):
subArrays.clear()
subArrays[sub_sum]=[(p,q)]
else:
subArrays[sub_sum].append((p,q))
sub_sum=0
p=i+1
if(sub_sum>=max_sum):
if(sub_sum>max_sum):
subArrays.clear()
subArrays[sub_sum]=[(p,q)]
else:
subArrays[sub_sum].append((p,q))
return(subArrays[p:q+1])
Когда я пытался выполнить ввод
a=[ 1, 2, 5, -7, 2, 5 ]
Ожидаемый результат - [1, 2, 5]
, но вместо этого он дал [2, 5]
. Может ли кто-нибудь опубликовать решение в python?
TypeError: unhashable type: 'slice'
в строкеreturn
... - person Adam.Er8   schedule 14.07.2019