RSS DEV 커뮤니티

72일차: 파이썬 슬라이딩 윈도우 최대값 - 덱을 이용한 효율적인 최대값 추적 (LeetCode #239 가이드)

코딩 챌린지 72일차는 파이썬을 사용하여 슬라이딩 윈도우 최대값 문제를 해결하는 데 집중했습니다. 핵심 솔루션은 덱(deque)을 사용하여 배열에서 크기가 *k*인 각 슬라이딩 윈도우 내의 최대값을 효율적으로 찾는 것입니다. 이 접근 방식은 O(n) 시간 복잡도를 달성하여 단순한 O(nk) 방식을 능가합니다. `sliding_window_max`라는 함수는 배열과 윈도우 크기를 입력으로 받아 최대값 목록을 반환합니다. 덱은 인덱스를 저장하는 데 사용되며, 덱의 앞부분은 항상 현재 윈도우 내의 최대값의 인덱스를 유지합니다. 알고리즘은 배열을 반복하면서 오래된 인덱스와 작은 값을 덱에서 제거한 후 현재 인덱스를 추가합니다. 인덱스는 윈도우 크기에 도달한 후에만 윈도우에 추가됩니다. 윈도우가 완료되면 최대값이 결과 목록에 추가됩니다. 이 구현은 스트리밍 데이터, 주식 분석 및 실시간 최대값 쿼리에 적합합니다. 스크립트에는 사용자 입력 및 출력을 위한 메인 섹션도 포함되어 있습니다. 인덱스 저장은 덱 내에서 유효한 윈도우 검사에 매우 중요합니다. 단조 감소 속성은 앞부분이 항상 최대값을 유지하도록 보장합니다. 이 솔루션은 인덱스 추적과 분할 상환 O(1) 처리를 강조합니다.
favicon
dev.to
Day 72: Python Sliding Window Maximum - Deque O(n) Solution for Efficient Max Tracking (LeetCode #239 Guide)