leetcode中关于dfs解体思路Personal-Notes总思路不贪图运行时间最快,但算法复杂度需要尽可能低,思路要易于理解,代码要尽可能短。每条思路所对应的代码最好要形成模板。
String基本操作
s2 = \"shaunwei\"
s2[-3:] = \"wei\"
s2[5:8] = \"wei\"
s2.index('w') = 5 # 如果没找到,返回-1
链表
链表的技巧不多,主要是记忆操作顺序太繁琐。常见操作有翻转链表、删除节点、Dummy Node、快慢指针。
Tree遍历
DFS和BFS:前序、中序、后序。BFS用于广度优先搜索。
BST(左子树 < root < 右子树),使用中序遍历得到的是有序数组。
Stack & Queues
堆栈与DFS和BFS:Stack一般用来模拟DFS,但不如回溯简洁,Queue一般用来模拟BFS。
Infix Expression Evaluation
中缀到后缀转换:要点在于,为什么遇到计算符时要把优先级大于等于自己的运算符全部弹出?因为在后缀表达式里,他们放在前面就等于先去计算他们;栈在这里实际上就是起到一个保留运算符的作用。
暂无评论