232.用栈实现队列
class MyQueue:
def __init__(self):
self.stack1 = []
self.stack2 = []
def push(self, x: int) -> None:
self.stack1.append(x)
def pop(self) -> int:
if not self.stack2:
while self.stack1:
self.stack2.append(self.stack1.pop())
return self.stack2.pop()
def peek(self) -> int:
if not self.stack2:
while self.stack1:
self.stack2.append(self.stack1.pop())
return self.stack2[-1]
def empty(self) -> bool:
return max(len(self.stack1), len(self.stack2)) == 0
# Your MyQueue object will be instantiated and called as such:
# obj = MyQueue()
# obj.push(x)
# param_2 = obj.pop()
# param_3 = obj.peek()
# param_4 = obj.empty()
225. 用队列实现栈
#需要注意q1复制到q2的边界条件
class MyStack:
def __init__(self):
self.q1 = []
self.q2 = []
def push(self, x: int) -> None:
self.q1.append(x)
def pop(self) -> int:
while len(self.q1) > 1:
self.q2.append(self.q1.pop(0))
result = self.q1.pop(0)
self.q1,self.q2 = self.q2, self.q1
return result
def top(self) -> int:
while len(self.q1) > 1:
self.q2.append(self.q1.pop(0))
result = self.q1[0]
self.q2.append(self.q1.pop(0))
self.q1,self.q2 = self.q2, self.q1
return result
def empty(self) -> bool:
return max(len(self.q1),len(self.q2)) == 0
# Your MyStack object will be instantiated and called as such:
# obj = MyStack()
# obj.push(x)
# param_2 = obj.pop()
# param_3 = obj.top()
# param_4 = obj.empty()
20. 有效的括号
#直接用stack
class Solution:
def isValid(self, s: str) -> bool:
stack = []
for c in s:
if c == '(':
stack.append(')')
elif c == '[':
stack.append(']')
elif c == '{':
stack.append('}')
else:
if not stack or stack[-1] != c:
return False
stack.pop()
return not stack
1047. 删除字符串中的所有相邻重复项
代码随想录 代码随想录PDF,代码随想录网站,代码随想录百度网盘,代码随想录知识星球,代码随想录八股文PDF,代码随想录刷题路线,代码随想录知识星球八股文 https://programmercarl.com/1047.%E5%88%A0%E9%99%A4%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E7%9B%B8%E9%82%BB%E9%87%8D%E5%A4%8D%E9%A1%B9.html#%E7%AE%97%E6%B3%95%E5%85%AC%E5%BC%80%E8%AF%BE
class Solution:
def removeDuplicates(self, s: str) -> str:
s_cur = []
for c in s:
if not s_cur or s_cur[-1] != c:
s_cur.append(c)
else:
s_cur.pop()
s_new = ''.join(s_cur)
return s_new