-
Notifications
You must be signed in to change notification settings - Fork 0
/
CQueue.h
74 lines (63 loc) · 1.75 KB
/
CQueue.h
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
//
// Created by Wanhui on 2/16/20.
//
#ifndef SWORDTOOFFER_CQUEUE_H
#define SWORDTOOFFER_CQUEUE_H
/*
* 剑指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 次调用
* */
/**
* Your CQueue object will be instantiated and called as such:
* CQueue* obj = new CQueue();
* obj->appendTail(value);
* int param_2 = obj->deleteHead();
*/
#include <stack>
/*
* 这道题思路就是使用两个栈,
* 一个栈添加元素,对应栈的push,
* 一个栈删除元素,对应栈的pop。
* 添加元素直接将数据push到栈1中即可。
* 删除元素需要将栈1中的元素push到栈2中,
* 达到数据逆序的目的,再取栈顶的元素并pop即可。
* 但这里需要注意的是,如果栈2不空时,直接pop栈顶元素,
* 不能将栈1新添加元素再push进来,
* 即删除操作过程,每次必须要等到栈2空了才能从栈1push元素到栈2中。
* */
class Solution09 {
public:
Solution09();
~Solution09();
void appendTail(int value);
int deleteHead();
private:
std::stack<int> stk1;
std::stack<int> stk2;
};
#endif //SWORDTOOFFER_CQUEUE_H