标签:
思路1(最普通的方法):
1、入队时,直接压入到stack1中;
2、出队时,先将stack1中的所有size-1个元素压入stack2中,然后将stack1的元素弹出;最后将stack2中的元素重新压入到s1中。
如下图所示:
1 class Solution 2 { 3 public: 4 void push(int node) { 5 stack1.push(node); 6 } 7 8 int pop() { 9 int t; 10 while (stack1.size() > 1){ 11 t = stack1.top(); 12 stack2.push(t); 13 stack1.pop(); 14 } 15 int rt = stack1.top(); 16 stack1.pop(); 17 while(stack2.size() > 0){ 18 t = stack2.top(); 19 stack1.push(t); 20 stack2.pop(); 21 } 22 return rt; 23 } 24 25 private: 26 stack<int> stack1; 27 stack<int> stack2; 28 };
思路2(优化):
1、入队时,直接压入到stack1中;
2、出队时,若stack2不为空,则直接弹出;若stack2为空,则将stack1的size-1个元素压入stack2中,最后弹出stack1中的栈顶元素。
1 class Solution 2 { 3 public: 4 void push(int node) { 5 stack1.push(node); 6 } 7 8 int pop() { 9 int rt; 10 if (!stack2.empty()){ 11 rt = stack2.top(); 12 stack2.pop(); 13 } 14 else{ 15 while (stack1.size() > 1){ 16 rt = stack1.top(); 17 stack2.push(rt); 18 stack1.pop(); 19 } 20 rt = stack1.top(); 21 stack1.pop(); 22 } 23 return rt; 24 } 25 private: 26 stack<int> stack1; 27 stack<int> stack2; 28 };
标签:
原文地址:http://www.cnblogs.com/qianmacao/p/4843495.html