-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathCQueue
More file actions
75 lines (60 loc) · 2.05 KB
/
Copy pathCQueue
File metadata and controls
75 lines (60 loc) · 2.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package com.striner.java.jzOffer;
import java.util.Stack;
public class CQueue09 {
private Stack<Integer> stack1; // pop从stack1出,顺序同入栈顺序相反顺序
private Stack<Integer> stack2; // push从stack入,顺序同入栈顺序
public CQueue09() {
stack1 = new Stack<>();
stack2 = new Stack<>();
}
//剑指 Offer 09. 用两个栈实现队列
//用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 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 次调用
//https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/
public static void main(String[] args) {
}
public void appendTail(int value) {
stack2.push(value);
}
public int deleteHead() {
if (stack1.empty()) {
if (stack2.empty()) {
return -1;
}
// stack2数据倒入stack1中(在从stack1中pop)
while (!stack2.empty()) {
Integer pop = stack2.pop();
stack1.push(pop);
}
}
// 从stack1中pop
return stack1.pop();
}
}
/**
* Your CQueue object will be instantiated and called as such:
* CQueue obj = new CQueue();
* obj.appendTail(value);
* int param_2 = obj.deleteHead();
*/
//执行结果: 通过
//执行用时: 43 ms , 在所有 Java 提交中击败了 78.20% 的用户
//内存消耗: 46.4 MB , 在所有 Java 提交中击败了 85.14% 的用户