두 개의 스택이있는 대기열을 구현합니다. 큐의 선언은 다음과 같으며, 큐의 끝에 정수를 삽입하고 큐의 선두에 정수를 삭제하는 기능을 각각 완료하는 appendTail과 deleteHead의 두 가지 함수를 구현하십시오. (큐에 요소가없는 경우 deleteHead 작업은 -1을 반환합니다.)
스택 1은 새 요소를 저장하는 데 사용되고 스택 2는 이전 요소를 팝업하는 데 사용됩니다.
appendTail : 새 요소를 스택 1에 직접 푸시
deleteHead : 스택 2의 요소를 직접 팝; 스택 2가 비어있는 경우 스택 1의 모든 요소는 스택 2로 푸시됩니다. 스택 1도 비어 있으면 -1을 반환합니다.
class ST_Queue():
def __init__(self):
self.s1=[]
self.s2=[]
def appendTail(self,value):
self.s1.append(value)
def deleteHead(self):
if len(self.s2)==0:
if len(self.s1)==0:
return -1
while len(self.s1)>0:
self.s2.append(self.s1.pop())
return self.s2.pop()
if __name__=="__main__":
tes=ST_Queue()
for i in range(5):
tes.appendTail(i)
print("s1:",tes.s1)
print("s2:",tes.s2)
tes.deleteHead()
tes.deleteHead()
print("s1:",tes.s1)
print("s2:",tes.s2)
복잡성 분석 :
시간 복잡성 :
대기열에 넣기 : O (1) 대기열에서
빼기 : O (1)
공간 복잡성 :
대기열에 넣기 : O (n) 대기열에서
빼기 : O (1)