1574. 배열 정렬을 위해 제거할 최단 하위 배열
난이도:중
주제: 배열, 두 포인터, 이진 검색, 스택, 단조 스택
정수 배열 arr이 주어지면 arr의 나머지 요소가 감소하지 않도록.
arr에서 하위 배열(비어 있을 수 있음)을 제거합니다.제거할 가장 짧은 하위 배열의 길이를 반환합니다.
하위 배열은 배열의 연속된 하위 시퀀스입니다.
예 1:
예 2:
예 3:
제약조건:
힌트:
해결책:
정렬 및 이진 검색 기술을 사용할 수 있습니다. 계획은 다음과 같습니다.
두 가지 지침 접근 방식:
단조 스택:
단계:
최적화:
PHP에서 이 솔루션을 구현해 보겠습니다: 1574. 배열 정렬을 위해 제거할 최단 하위 배열
설명:
감소하지 않는 가장 긴 접두사 및 접미사:
- 접두사는 요소가 감소하지 않는 순서가 될 때까지 배열을 처음부터 순회하여 결정됩니다.
- 마찬가지로 접미사는 끝에서부터 순회하여 결정됩니다.
최소 초기 제거:
- 접두사 또는 접미사만 유지하여 제거 길이를 계산합니다.
접두사 및 접미사 병합:
- 접두사의 마지막 요소가 접미사의 첫 번째 요소보다 작거나 같도록 두 개의 포인터(접두사의 경우 i, 접미사의 경우 j)를 사용하여 제거할 가장 작은 하위 배열을 찾습니다.
반품 결과:
- 결과는 제거할 하위 배열의 최소 길이이며, 초기 제거 길이나 접두사와 접미사 병합 길이 중 더 작은 길이로 계산됩니다.
복잡성
이 솔루션은 2포인터 기술을 사용하여 배열을 정렬하기 위해 제거할 가장 짧은 하위 배열을 효율적으로 찾고, 최대 10^5 요소 제약 조건까지 큰 배열을 처리합니다.
연락처 링크
이 시리즈가 도움이 되었다면 GitHub에서 저장소에 별표를 표시하거나 즐겨찾는 소셜 네트워크에서 게시물을 공유해 보세요. 여러분의 지원은 저에게 큰 의미가 될 것입니다!
이렇게 더 유용한 콘텐츠를 원하시면 저를 팔로우해주세요.
위 내용은 배열을 정렬하기 위해 제거할 가장 짧은 하위 배열의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!