862. 합이 최소 K인 최단 하위 배열
난이도:어려움
주제: 배열, 이진 검색, 큐, 슬라이딩 윈도우, 힙(우선순위 큐), 접두사 합계, 단조 큐
정수 배열 nums와 정수 k가 주어지면 최소 k의 합을 갖는 nums의 비어 있지 않은 가장 짧은 길이 하위 배열을 반환합니다. 해당 하위 배열이 없으면 -1을 반환합니다.
하위 배열은 배열의 인접 부분입니다.
예 1:
예 2:
예 3:
제약조건:
해결책:
접두사 합계 및 단조 대기열과 결합된 슬라이딩 윈도우 접근 방식을 사용해야 합니다. 단계별 접근 방식은 다음과 같습니다.
접두사 합계:
단조 대기열:
슬라이딩 윈도우 로직:
이 솔루션을 PHP로 구현해 보겠습니다. 862. 합이 최소 K인 최단 하위 배열
설명:
접두사 합계 배열:
- prefix_sum 배열에서 배열의 누적 합계를 계산합니다. 이는 prefix_sum[j 1] - prefix_sum[i] 공식을 사용하여 하위 배열 nums[i...j]의 합계를 계산하는 데 도움이 됩니다.
단조 대기열:
- deque는 값의 오름차순으로 prefix_sum 배열의 인덱스를 보유합니다. 합이 k보다 크거나 같은 가장 작은 하위 배열을 효율적으로 찾을 수 있도록 이 순서를 유지합니다.
슬라이딩 윈도우 로직:
- prefix_sum 배열을 탐색하면서 현재 prefix_sum[i]와 이전 prefix_sum[deque[0]] 간의 차이를 사용하여 가장 작은 하위 배열을 찾으려고 합니다.
- 차이가 k보다 크거나 같으면 하위 배열 길이를 계산하고 발견된 최소 길이를 업데이트합니다.
반환 결과:
- 유효한 하위 배열이 없으면 -1을 반환합니다. 그렇지 않으면 최소 하위 배열 길이를 반환합니다.
시간 복잡도:
이 접근 방식을 사용하면 대규모 입력에도 솔루션이 효율적으로 실행됩니다.
연락처 링크
이 시리즈가 도움이 되었다면 GitHub에서 저장소에 별표를 표시하거나 즐겨찾는 소셜 네트워크에서 게시물을 공유해 보세요. 여러분의 지원은 저에게 큰 의미가 될 것입니다!
이런 유용한 콘텐츠를 더 원하시면 저를 팔로우해주세요.
위 내용은 . 합이 최소 K인 최단 하위 배열의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!