1、SingleLinkList python
1.1 链表反转app
1.2 链表相邻两个节点交换blog
1.3 判断链表是否是有环队列
2、Stackelement
2.1判断输入的括号是否合法字符串
def isValid(self, s: str) -> bool: stack = [] str_dic = {')':'(', ']':'[', '}':'{'} for i in s: if i not in str_dic: stack.append(i) else: if not stack: return False else: res = stack.pop() if str_dic[i] == res: pass else: return False return not stack
整个题目的思考逻辑是, 若是输入的字符串是又括号 ,判断咱们的stack是否为空,若是是空的直接报错,若是不是空的,则要弹出栈顶元素,而后根据咱们的字典,以输入的字符为k,拿到value,判断value与咱们的栈顶元素是否一致,若是不一致,直接报错。
若是是输入的是左扩展,咱们直接压入栈,最后将整个字符串遍历完成后,判端栈中是否还有元素,若是有说有部分没有匹配上,报错。
2.2 只经过栈实现一个队列 input
class MyQueue: def __init__(self): """ Initialize your data structure here. """ self.input = [] self.output = [] def push(self, x: int) -> None: """ Push element x to the back of queue. """ self.input.append(x) def pop(self) -> int: """ Removes the element from in front of queue and returns that element. """ if len(self.output): return self.output.pop() for j in range(len(self.input)): self.output.append(self.input.pop()) return self.output.pop() def peek(self) -> int: """ Get the front element. """ if not len(self.output): for j in range(len(self.input)): self.output.append(self.input.pop()) return self.output[-1] else: return self.output[-1] def empty(self) -> bool: """ Returns whether the queue is empty. """ if len(self.output) or len(self.input): return False return True这个问题一个思路是,经过两个栈,来实现先进先出, 过程是,A栈只用来push就是压入,另一个栈,当peek或者pop时,将A栈的数据,,放入到B栈中,而后在从B栈中进行返回,这样就达到了一个先进先出的结果