classCustomStack{public:CustomStack(intmaxSize):maxSize(maxSize){}voidpush(intx){if(stack.size()==maxSize)return;stack.push(x);pendingIncrements.push_back(0);}intpop(){if(stack.empty())return-1;constinti=stack.size()-1;if(i>0)pendingIncrements[i-1]+=pendingIncrements[i];constintval=stack.top()+pendingIncrements[i];stack.pop();pendingIncrements.pop_back();returnval;}voidincrement(intk,intval){if(stack.empty())return;constinti=min(k-1,static_cast<int>(stack.size())-1);pendingIncrements[i]+=val;}private:constintmaxSize;stack<int>stack;// pendingIncrements[i] := the pending increment for stack[0..i].vector<int>pendingIncrements;};
classCustomStack{publicCustomStack(intmaxSize){this.maxSize=maxSize;}publicvoidpush(intx){if(stack.size()==maxSize)return;stack.push(x);pendingIncrements.add(0);}publicintpop(){if(stack.isEmpty())return-1;finalinti=stack.size()-1;finalintpendingIncrement=pendingIncrements.get(i);pendingIncrements.remove(i);if(i>0)pendingIncrements.set(i-1,pendingIncrements.get(i-1)+pendingIncrement);returnstack.pop()+pendingIncrement;}publicvoidincrement(intk,intval){if(stack.isEmpty())return;finalinti=Math.min(k-1,stack.size()-1);pendingIncrements.set(i,pendingIncrements.get(i)+val);}privateintmaxSize;privateDeque<Integer>stack=newArrayDeque<>();// pendingIncrements[i] := the pending increment for stack[0..i].privateList<Integer>pendingIncrements=newArrayList<>();}
1 2 3 4 5 6 7 8 910111213141516171819202122232425
classCustomStack:def__init__(self,maxSize:int):self.maxSize=maxSizeself.stack=[]# pendingIncrements[i] := the pending increment for stack[0..i].self.pendingIncrements=[]defpush(self,x:int)->None:iflen(self.stack)==self.maxSize:returnself.stack.append(x)self.pendingIncrements.append(0)defpop(self)->int:ifnotself.stack:return-1iflen(self.stack)>1:self.pendingIncrements[-2]+=self.pendingIncrements[-1]returnself.stack.pop()+self.pendingIncrements.pop()defincrement(self,k:int,val:int)->None:ifnotself.stack:returni=min(k-1,len(self.stack)-1)self.pendingIncrements[i]+=val
Thanks for stopping by! If you find this site helpful, consider buying me some protein powder to keep me fueled! π