Given an array of integers and a number k, where 1 <= k <= length of the array, compute the maximum values of each subarray of length k.
For example, given array = [10, 5, 2, 7, 8, 7] and k = 3, we should get: [10, 7, 8, 8], since:
- 10 = max(10, 5, 2)
- 7 = max(5, 2, 7)
- 8 = max(2, 7, 8)
- 8 = max(7, 8, 7)
Do this in O(n) time and O(k) space. You can modify the input array in-place and you do not need to store the results. You can simply print them out as you compute them.
This was posed as a hard coding challenge. My confusion is that I solved the problem in 5 lines of code. Either the code doesn't achieve the correct time complexity (which I think it does), or this challenge has been incorrectly categorised. Please can someone review my code to see if it is correct.
array = [10,5,2,7,8,7,9] k = 4 for index in range (len(array)-(k-1)): print(max(array[index:index+k]))