고정 된 크기의 배열 하나를 사용하여 두 개의 스택을 효율적으로 구현할 수 있습니다. 스택 # 1은 왼쪽 끝에서 시작하여 오른쪽으로 커지고 스택 # 2는 오른쪽 끝에서 시작하여 왼쪽으로 커집니다. 세 개의 스택에 대해서도 동일합니까?
보다 구체적으로, 다음과 같은 조건에서 3 개의 스택을 구현할 수 있습니다.
- N 개의 개체를 담을 수있는 고정 크기 배열이 있습니다.
- 세 스택 크기의 합이 <N 인 한 push ()는 실패하지 않아야합니다.
- push () 및 pop () 작업 모두 O (1) 시간이 걸립니다.
- 배열 외에도 O (1) 추가 공간 만 사용할 수 있습니다.
이러한 요구 사항을 충족 하지 않는 솔루션의 예는 다음과 같습니다 .
- 어레이를 3 개의 고정 부품으로 분할하고 스택에 각 부품을 사용합니다 (2를 위반).
- 위와 비슷하지만 스택 사이에 움직일 수있는 경계가 있습니다 (3을 위반).
- 간단한 연결 목록 기반 구현 (4 위반)
푸시 / 팝이 O (1) 할부 상환 시간을 걸리는 알고리즘 또는 추가 메모리는 O (N)보다 작습니다 (예 : O (log N)). 또는 예를 들어 푸시 / 팝당 5 개 미만의 어레이 요소에 액세스하는 것이 불가능하다는 것을 보여주는 불가능한 증거입니다.