力扣1381.设计一个支持增量操作的栈
力扣1381.设计一个支持增量操作的栈
-
因为删除只会从栈顶开始
- 所以只要保留栈顶元素的增量即可
- 删除时再求新栈顶元素的增量
-
class CustomStack { stack<int> st; vector<int> inc{vector<int>(1000,0)}; int max_size = -1; public: CustomStack(int maxSize) { max_size = maxSize; } void push(int x) { if(st.size() < max_size) st.push(x); } int pop() { if(st.empty()) return -1; else { int n = st.size(); int x = st.top() + inc[n-1]; st.pop(); if(n >= 2) inc[n-2] += inc[n-1]; inc[n-1] = 0; return x; } } void increment(int k, int val) { int n = min(k,int(st.size())); if(n == 0) return; else inc[n-1] += val; } };
原文地址:https://blog.csdn.net/Pisasama/article/details/140349704
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!