gg系列,偷懒三天,心酸。。
刷题进度:5/200
作者:变优秀的小白
Github:关注YX-XiaoBai
爱好:Americano More Ice !
QQ学习交流群(new): 811792998
题目(难度:S)
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )
示例 1:
输入:
["CQueue","appendTail","deleteHead","deleteHead"]
[[],[3],[],[]]
输出:[null,null,3,-1]
示例 2:
输入:
["CQueue","deleteHead","appendTail","appendTail","deleteHead","deleteHead"]
[[],[],[5],[2],[],[]]
输出:[null,-1,null,null,5,2]
提示:
1 <= values <= 10000
最多会对 appendTail、deleteHead 进行 10000 次调用
Code
java 版本
class CQueue {
// 创建两个链表
LinkedList<Integer> A, B;
public CQueue() {
// 新建两个链表实现栈功能
A = new LinkedList<Integer>();
B = new LinkedList<Integer>();
}
public void appendTail(int value) {
// 链表在尾部添加新元素
A.addLast(value);
}
public int deleteHead() {
// 如果B不为空,删除队尾
if(!B.isEmpty()) return B.removeLast();
// 如果A为空,返回-1
if(A.isEmpty()) return -1;
// 当A不为空
while(!A.isEmpty())
// A删除队尾元素,将A删除的元素加入B中
B.addLast(A.removeLast());
// 输出B最尾元素
return B.removeLast();
}
}
时间复杂度: O(n)
空间复杂度: O(n)
结束语:大家如果遇到什么疑问或者建议的,可直接留言评论!作者看到会马上一一回复!