class Solution:
def __init__(self):
self.stack1 = []
self.stack2 = []
def push(self, node):
self.stack2.append(node)
def pop(self):
if self.stack1 == []:
if self.stack2 == []:
return []
else:
while self.stack2:
self.stack1.append(self.stack2.pop())
return self.stack1.pop()
class Solution:
def __init__(self) -> None:
self.stack = []
def push(self, node):
self.stack.append(node)
def pop(self):
if self.stack != []:
self.stack.pop()
def top(self):
if self.stack != []:
temp = self.stack[-1]
else:
temp = None
return temp
def min(self):
if self.stack != []:
num = min(self.stack)
else:
num = None
return num
class Solution:
def IsPopOrder(self , pushV: List[int], popV: List[int]) -> bool:
n = len(pushV)
stack = [] #辅助栈
i = 0 #pushV入栈顺序指针
for j in range(n): #出栈顺序指针
#辅助栈为空或者栈顶元素不是出栈元素,就给辅助栈入栈
while i < n and (len(stack) == 0 or stack[-1] != popV[j]):
stack.append(pushV[i])
i += 1
#栈顶相等就出栈
if stack[-1] == popV[j]:
stack.pop()
else:
return False
return True
class Solution:
def ReverseSentence(self , str: str) -> str:
n = len(str)
if n <= 1:
return str
res = str.split(' ')
return ' '.join(res[::-1])
class Solution:
def maxInWindows(self , num: List[int], size: int) -> List[int]:
if size == 0 or len(num) < size:
return []
left = 0
right = 0
res = []
while right < len(num):
if right - left + 1 == size:
res.append(max(num[left:right+1]))
left += 1
right += 1
else:
right += 1
return res