Menu
CoddyTech

Sliding Window Maximum

정수 배열 nums와 윈도우 크기 k가 주어집니다. 윈도우는 연속된 k개의 값을 포함합니다. 윈도우는 배열의 왼쪽 끝에서 시작해 한 번에 한 위치씩 오른쪽으로 이동하며, 오른쪽 끝이 마지막 값에 놓일 때까지 이동합니다.

왼쪽에서 오른쪽으로 각 위치의 윈도우 안에서 가장 큰 값으로 이루어진 배열을 반환하세요. 길이가 n인 배열에는 n-k+1개의 윈도우가 있으므로 결과에는 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는 처음 세 개의 윈도우인 [4, 2, 12], [2, 12, 3], [12, 3, 8]에 들어 있습니다. 12가 밀려 나간 후에는 [3, 8, 5]와 [8, 5, 1] 윈도우 모두에서 8이 가장 큰 값입니다.

lock icon제출 시 숨은 테스트 +15개

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]