아이디어 :이
질문은 스택의 아이디어를 사용하여 수행하는 것입니다. 하나의 스택은 숫자를 입력하는 데 사용되며 숫자를 출력하려면 다른 스택에 숫자가 있는지 확인하기 만하면됩니다. 그렇지 않은 경우 스택 1을 넣으십시오. 숫자는 스택 2에 넣고 스택 2는 대기열에있는 요소와 동일합니다.
암호:
class CQueue {
public:
CQueue() {
}
void appendTail(int value) {
st1.push(value);
return ;
}
int deleteHead() {
if(st1.size()==0 && st2.size()==0 ) return -1;
if(st2.size()){
int t = st2.top();
st2.pop();
return t;
}else{
while(!st1.empty()){
st2.push(st1.top());
st1.pop();
}
int t = st2.top();
st2.pop();
return t;
}
return 0;
}
private:
stack<int> st1,st2;
};
/**
* Your CQueue object will be instantiated and called as such:
* CQueue* obj = new CQueue();
* obj->appendTail(value);
* int param_2 = obj->deleteHead();
*/