力扣LCR184.设计自助结算系统
一个队列存所有value
- 一个数组模拟单调队列存区间最大值
const int N = 100010; int a[N]; class Checkout { queue<int> q; int hh=0,tt=-1; public: Checkout() { } int get_max() { if(hh > tt) return -1; return a[hh]; } void add(int value) { while(hh <= tt && a[tt] <= value) tt --; a[++tt] = value; q.push(value); } int remove() { if(q.empty()) return -1; int ans = q.front(); if(ans == a[hh]) hh++; q.pop(); return ans; } };