증분 연산으로 스택 설계
CustomStack
클래스를 구현합니다.CustomStack(int maxSize)
스택의 최대 요소 수인 maxSize
로 개체를 초기화하거나 스택이 maxSize
에 도달하면 아무 작업도 수행하지 않습니다. void push(int x)
스택이 x
에 도달하지 않은 경우 스택 맨 위에 maxSize
를 추가합니다. int pop()
스택의 맨 위를 팝하고 반환하거나 스택이 비어 있으면 -1을 반환합니다. void inc(int k, int val)
스택의 맨 아래 k
요소를 val
만큼 증가시킵니다. 스택에 k
개 미만의 요소가 있는 경우 스택의 모든 요소를 증가시킵니다. 예 1:
입력
["CustomStack","푸시","푸시","팝","푸시","푸시","푸시","증가","증가","팝","팝","팝","팝"]
[[3],[1],[2],[],[2],[3],[4],[5,100],[2,100],[],[],[],[]]
산출
[널,널,널,2,널,널,널,널,널,103,202,201,-1]
설명
CustomStack customStack = 새 CustomStack(3);//스택이 비어 있음 []
customStack.push(1);//스택은 [1]이 됩니다.
customStack.push(2);//스택은 [1, 2]가 됩니다.
customStack.pop();//리턴 2 --> 스택 2의 맨 위 리턴, 스택은 [1]이 됨
customStack.push(2);//스택은 [1, 2]가 됩니다.
customStack.push(3);//스택은 [1, 2, 3]이 됩니다.
customStack.push(4);//여전히 스택 [1, 2, 3], 크기가 4이므로 다른 요소를 추가하지 않음
customStack.increment(5, 100);//스택은 [101, 102, 103]이 됩니다.
customStack.increment(2, 100);//스택은 [201, 202, 103]이 됩니다.
customStack.pop();//103 반환 --> 스택 103의 맨 위로 반환, 스택은 [201, 202]가 됨
customStack.pop();//202 반환 --> 스택 102의 맨 위로 반환, 스택은 [201]이 됨
customStack.pop();//201 반환 --> 스택 101의 맨 위 반환, 스택은 []
customStack.pop();//return -1 --> 스택이 비어 있음 return -1.
제약:
1 <= maxSize <= 1000
1 <= x <= 1000
1 <= k <= 1000
0 <= val <= 100
1000
, increment
및 push
의 각 메소드에 대해 최대 pop
호출이 개별적으로 이루어집니다. 해결책:
class CustomStack:
def __init__(self, maxSize: int):
self.stack = []
self.maxSize = maxSize
def push(self, x: int) -> None:
if len(self.stack) < self.maxSize:
self.stack.append(x)
def pop(self) -> int:
if len(self.stack) > 0:
return self.stack.pop()
return -1
def increment(self, k: int, val: int) -> None:
i = 0
while i < k and i < len(self.stack):
self.stack[i] += val
i += 1
# Your CustomStack object will be instantiated and called as such:
# obj = CustomStack(maxSize)
# obj.push(x)
# param_2 = obj.pop()
# obj.increment(k,val)
Reference
이 문제에 관하여(증분 연산으로 스택 설계), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/theabbie/design-a-stack-with-increment-operation-f9d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)