题目:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。思路:定义两个栈,一个栈data用来正常压入、弹出数据,另一个栈min,压入的时候压入当前最小的数,弹出的时候也弹出最小的数当压入栈的时候,如果压入的数据小于当前栈中最小...
分类:
其他好文 时间:
2015-06-11 20:49:52
阅读次数:
113
注意这里是整数,浮点数需要额外的操作,实现大整数的加减,三个栈就OK了,两个运算整数栈,一个结果栈,基本的逻辑的就是利用栈的先入后出的特点将高位push到栈底,低位push到栈顶,之后两个栈pop出来之后push到结果栈,结果栈pop出来就是我们想要的结果。看起来还不错,如果有兴趣就看下面的代码,代...
分类:
编程语言 时间:
2015-06-11 19:18:47
阅读次数:
150
栈的特点是“先进后出”,队列的特点是“先进先出”;向队列中依次添加元素n、m,当删除时,先删除应该是n;向栈1中添加元素n、m,当要删除时,把栈1的元素添加到栈2中,元素n刚好位于栈顶,n就会被先删除,正好实现了队列的特点。代码如下,已测。public class Queue { private Stack stackOne=new Stack();
p...
分类:
其他好文 时间:
2015-06-05 15:47:15
阅读次数:
143
利用两个栈,然后分别存储每一个链表。继而,相继pop相同的节点。有些细节需要注意,请看最后的返回值是如何处理的。/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListN...
分类:
其他好文 时间:
2015-06-01 00:43:34
阅读次数:
185
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。设两个栈为stack1,stack2;1:首先想到最简单的方法:是入栈时将数据压入stack1,出栈时将stack1中的元素出栈压入stack2,在将stack2栈顶元素弹出,再将stack2中的剩余元素重新...
分类:
其他好文 时间:
2015-05-31 16:35:29
阅读次数:
120
【要求】用两个队列queue1,queue2来实现栈的压栈和出栈功能。【分析】此问题类似于用两个栈实现队列的功能的思路,将队列queue1作为入栈专职,queue2作为中转,主要思路是,压栈时将所有元素全部进队queue1,出栈时由于要将queue1最后一个进来的元素输出,所以先将queue1除最后一个元素以外的所有元素转到queue2,出队输出最后一个元素后,将queue2所有元素出队,重新入队到...
分类:
其他好文 时间:
2015-05-27 19:05:45
阅读次数:
129
【题目】用两个栈实现一个队列,分别完成在队列尾部插入结点和在队列头部删除结点的功能。【分析】假设两个栈,栈1和栈2,来实现队列,栈1用来入队,栈2用来出队。
入队时,将元素全部压入栈1;
出队时,如果栈2不为空,就直接pop栈2,否则,就将栈1的所有元素pop到栈1里,再把栈2栈顶弹出。
由图所示,abcdef依次入队,压栈,出队时先将元素从s1弹出,压入s2,从s2出栈实现出队,即使后面再有...
分类:
其他好文 时间:
2015-05-27 10:23:41
阅读次数:
166
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。class Solution
{
public:
void push(int node) {
stack1.push(node);
} int pop() {
if(stack2.empty()) {//第二个栈为空时
while(!stack1.empty()) {...
分类:
其他好文 时间:
2015-05-18 14:51:02
阅读次数:
102
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 水题,直接上代码: class Solution
{
public: void push(int node) { stack1.push(node); } int pop() { if (stack2.e...
分类:
其他好文 时间:
2015-05-11 14:27:40
阅读次数:
114