Menu
CoddyTech

Sliding Window Maximum

정수 배열 nums와 윈도우 크기 k가 주어집니다. k개의 연속된 값으로 이루어진 윈도우는 왼쪽 끝에서 시작해 한 번에 한 위치씩 오른쪽으로 이동하며, 오른쪽 끝이 마지막 값에 놓일 때까지 움직입니다. 왼쪽에서 오른쪽으로 각 위치에서 윈도우 내 최댓값을 반환합니다. 길이가 n인 배열의 경우 n-k+1개의 값이 반환됩니다.

함수

maxSlidingWindow(nums: integer-array, k: integer) → integer-array
numsinteger-array
배열을 따라 이동하는 윈도우
kinteger
모든 윈도우의 값 개수
반환값integer-array
가장 왼쪽 창부터 가장 오른쪽 창까지 각 창의 최댓값

제약 조건

  • 1 ≤ k ≤ nums.length ≤ 2 × 104
  • -104 ≤ nums[i] ≤ 104
  • 결과에는 왼쪽에서 오른쪽 순서로 각 윈도우당 하나씩 nums.length-k+1개의 값이 들어 있습니다.

예제

입력
nums = [4, 2, 12, 3, 8, 5, 1]k = 3
출력
[12, 12, 12, 8, 8]
설명
12는 처음 세 개의 윈도우 안에 있으므로, 각 윈도우의 답은 12입니다. 12가 윈도우에서 빠져나간 후에는 [3, 8, 5]와 [8, 5, 1] 모두 최댓값이 8입니다.
challenge icon

후속 질문

뒤쪽에 값을 추가하고, 앞쪽에서 값을 제거하며, 현재 최댓값을 각각 상환 O(1) 시간에 읽을 수 있는 큐를 만들 수 있나요?

코드 초기화
def maxSlidingWindow(nums, k):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

테스트 #3

인자들

nums = [4, 2, 12, 3, 8, 5, 1]
k = 3

예상 출력

[12, 12, 12, 8, 8]