>백엔드 개발 >Golang >레벨 캐싱 없이 배열에 핸들러를 적용하시겠습니까?

레벨 캐싱 없이 배열에 핸들러를 적용하시겠습니까?

WBOY
WBOY앞으로
2024-02-06 09:42:08785검색

레벨 캐싱 없이 배열에 핸들러를 적용하시겠습니까?

질문 내용

전체 순열을 반환하지 않고 모든 입력 순열에 지정된 핸들러를 적용하는 함수를 작성하고 싶습니다.

코드

(go에서)

  • 배정 찾기:

    으아아아
  • 테스트 케이스(간단):

    으아아아

지침

  • 위의 함수 findallpermutationapplyhandler()는 순열을 찾아 각 조합에 지정된 핸들러를 적용합니다.
  • 하지만 이전 n-1 레벨 (가장 최근 2개 레벨을 동시에) 을 캐시해야 합니다.
  • 더 이상 레벨이 캐싱에 의존하지 않으므로 최종 레벨에서는 캐싱을 피했습니다.

질문

    1. 마지막 2레벨의 캐싱을 방지하는 것이 가능한가요?

      (일명, 공간 복잡성을 o(1)o(n),甚至我猜 o(n^2) 더 좋게 만듭니다). .

    1. 하지만 레벨i 是基于级别 i-1 때문에 그건 불가능해 보이는데요?
    1. 그렇다면 공간 복잡성을 줄이는 더 나은 알고리즘이 있습니까? (재귀 대신) 반복이 선호됩니다.

정답


찾으시는 것 같네요Pandita Algorithm

이것은 사전순으로 배열의 모든 순열을 반복하는 간단한 방법입니다.

그러나 배열의 요소를 정렬할 수 있어야 합니다. 그렇지 않은 경우(일반 유형이기 때문에) 모든 배열 인덱스의 보조 배열을 만들고 해당 순열을 생성할 수 있습니다.

위 내용은 레벨 캐싱 없이 배열에 핸들러를 적용하시겠습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제