1.对称的二叉树
class Solution:
def isSymmetrical(self , pRoot: TreeNode) -> bool:
if not pRoot:
return True
return self.pan(pRoot.left,pRoot.right)
def pan(self,left_,right_):
if not left_ and not right_:
return True
if (left_ and not right_) or (not left_ and right_):
return False
if left_.val != right_.val:
return False
return self.pan(left_.left,right_.right) and self.pan(left_.right,right_.left)
2.用两个栈实现队列
class Solution:
def __init__(self):
self.stack1 = []
self.stack2 = []
def push(self, node):
self.stack1.append(node)
def pop(self):
if self.stack2 == []:
while self.stack1:
self.stack2.append(self.stack1.pop())
return self.stack2.pop()
class Solution:
def __init__(self):
self.stack1 = []
self.stack2 = []
def push(self, node):
self.stack1.append(node)
self.stack2 = self.stack1[1:]
def pop(self):
temp = self.stack1[0]
self.stack1 = self.stack2
self.stack2 = self.stack1[1:]
return temp
3.包含min函数的栈
class Solution:
def __init__(self):
self.stack = []
def push(self, node):
if not self.stack:
self.stack.append((node,node))
else:
min_num = node if node < self.stack[-1][1] else self.stack[-1][1]
self.stack.append((node,min_num))
def pop(self):
self.stack.pop()
def top(self):
return self.stack[-1][0]
def min(self):
return self.stack[-1][1]
class Solution:
def __init__(self):
self.stack = []
self.stack_min = []
def push(self, node):
self.stack.append(node)
if self.stack_min == []:
self.stack_min.append(node)
if node < self.stack_min[-1]:
self.stack_min.append(node)
elif node >= self.stack_min[-1]:
self.stack_min.append(self.stack_min[-1])
def pop(self):
self.stack.pop()
self.stack_min.pop()
def top(self):
return self.stack[-1]
def min(self):
return self.stack_min[-1]
4.翻转单词序列
class Solution:
def ReverseSentence(self , str: str) -> str:
return " ".join(str.split()[::-1])
str_list = str.split()
str_list = str_list[::-1]
result = " ".join(str_list)
return result