So I need a solution for this example without using queue.
For example [1, 5, 7, 2, 11, 3, 6, 15, 1, 5, 0, 7, 6, 3] max sum of 4 elements here is 35 [11, 3, 6, 15].
This is my ‘logical’ code but I don’t know why is not working.

array = [1, 5, 7, 2, 11, 3, 6, 15, 1, 5, 0, 7, 6, 3]
k = 4
current_sum = 0
max_sum = -1
n = len(array)
for i in range(n):
for j in range(i, n):
if j < k:
current_sum += array[j]
continue
if current_sum > max_sum:
max_sum = current_sum
print(f"Max sum is {max_sum}")

Answer

Other answers have given correct solutions to your problem, but I’m going to go over why your code isn’t working.

if j < k:

If your code was working properly you’d expect j to be 0, 1, 2, 3 on the first time through the outer loop, then 1, 2, 3, 4 on the second time, etc. This means you shouldn’t be comparing j to k, you should be comparing j to i+k.

continue

In general, continue shouldn’t be used when possible. It makes the flow of the code hard to follow. Instead of using continue I’m going to change a different part of your code:

for j in range(i, n):

It makes sense that you’re starting at i, but why are you going to n? If you only want j to be 4 numbers, you should stop it at those 4 numbers. Let’s change this to for j in range(i, i+k):

Now we just need to make a couple more changes. You don’t want to check current_sum before you’re done adding it up, so let’s put if current_sum > max_sum inside the outer for loop. And don’t forget to reset current_sum to 0 after each iteration through the outer loop!

Lastly, we need to make sure we don’t go out of range of the array. We’ll do this by changing for i in range(n): to for i in range(n-k):.

The final code:

array = [1, 5, 7, 2, 11, 3, 6, 15, 1, 5, 0, 7, 6, 3]
k = 4
current_sum = 0
max_sum = -1
n = len(array)
for i in range(n-k):
for j in range(i, i+k):
current_sum += array[j]
if current_sum > max_sum:
max_sum = current_sum
current_sum = 0
print(f"Max sum is {max_sum}")

There are still some problems with this code, like when array has a length less than 4, but this fixes all the initial problems you had.

## Recent Comments