Учитывая массив размером n, для каждого k от 1 до n, найдите максимальную сумму смежного подмассива размером k.
Эта проблема имеет очевидное решение с временной сложностью O (N 2) и O (1). Код Lua:
array = {7, 1, 3, 1, 4, 5, 1, 3, 6}
n = #array
function maxArray(k)
ksum = 0
for i = 1, k do
ksum = ksum + array[i]
end
max_ksum = ksum
for i = k + 1, n do
add_index = i
sub_index = i - k
ksum = ksum + array[add_index] - array[sub_index]
max_ksum = math.max(ksum, max_ksum)
end
return max_ksum
end
for k = 1, n do
print(k, maxArray(k))
end
Есть ли какой-либо алгоритм с более низкой временной сложностью? Например, O (N log N) + дополнительная память.
Связанные темы: