File tree Expand file tree Collapse file tree 1 file changed +62
-0
lines changed Expand file tree Collapse file tree 1 file changed +62
-0
lines changed Original file line number Diff line number Diff line change
1
+ class SpecialQueue {
2
+
3
+ public:
4
+
5
+ queue<int>q;
6
+ deque<int>dq1,dq2;
7
+
8
+ // dq1-> mini
9
+ // dq2-> maxi
10
+ void enqueue(int x) {
11
+ // Insert element into the queue
12
+ q.push(x);
13
+
14
+ while(!dq1.empty() && dq1.back()>x){
15
+ dq1.pop_back();
16
+ }
17
+
18
+ dq1.push_back(x);
19
+
20
+ while(!dq2.empty() && dq2.back()<x){
21
+ dq2.pop_back();
22
+ }
23
+
24
+ dq2.push_back(x);
25
+ }
26
+
27
+ void dequeue() {
28
+ // Remove element from the queue
29
+ if(q.empty()) return ;
30
+ int x=q.front();
31
+
32
+ while(!dq1.empty() && x==dq1.front()) {
33
+ dq1.pop_front();
34
+ break;
35
+ }
36
+
37
+ while(!dq2.empty() && x==dq2.front()) {
38
+ dq2.pop_front();
39
+ break;
40
+ }
41
+
42
+ q.pop();
43
+ }
44
+
45
+ int getFront() {
46
+ // Get front element
47
+ int x=q.empty() ? -1 : q.front();
48
+ return x;
49
+ }
50
+
51
+ int getMin() {
52
+ // Get minimum element
53
+ if(q.empty()) return -1;
54
+ return dq1.front();
55
+ }
56
+
57
+ int getMax() {
58
+ // Get maximum element
59
+ if(q.empty()) return -1;
60
+ return dq2.front();
61
+ }
62
+ };
You can’t perform that action at this time.
0 commit comments