自学内容网 自学内容网

力扣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)!