1 Problem


Given an array and an integer A, find the maximum for each contiguous subarray of size A.

  • Input: array = [1, 2, 3, 1, 4, 5, 2, 3, 6],
    • A = 3
  • Output: 3 3 4 5 5 5 6

Below is a more detailed walkthrough of what you should be trying to code, using the example above:

  1. subarray 1 = [1, 2, 3, 1, 4, 5, 2, 3, 6]
    1.1. maximum of subarray 1 = 3
  2. subarray 2 = [1,2, 3, 1, 4, 5, 2, 3, 6]
    2.1. maximum of subarray 2 = 3
  3. subarray 3 = [1, 2, 3, 1, 4, 5, 2, 3, 6]
    3.1. maximum of subarray 3 = 4
  4. Etc.

2 Solving Problem with Python


# Data
array = [1, 2, 3, 1, 4, 5, 2, 3, 6]
a = 3

# List comprehension: upper limit excluded
[max(array[i:i + a]) for i in range(0, len(array) - a + 1)]
## [3, 3, 4, 5, 5, 5, 6]

3 Unique Function

def max_subarray(array, a):
  return [max(array[i:i + a]) for i in range(0, len(array) - a + 1)]

3.1 Example

array_1 = [2, 4, 6, 3, 10, 7]
a = 3

max_subarray(array_1, a)
## [6, 6, 10, 10]
array_2 = [1, 5, 7, 8, 4, 8, 3, 10, 15, 67, 8, 0, 1]
a = 4

max_subarray(array_2, a)
## [8, 8, 8, 8, 10, 15, 67, 67, 67, 67]