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