算法
最后更新于
这有帮助吗?
最后更新于
这有帮助吗?
chunk it up (拆解)
deliberate practicing (刻意练习)
feedback (反馈)
Clarification
Possible solutions compare(time/space) optimal(加强)
Coding (多写)
Test cases
数据结构 array stack 、queue priorityQueue(heap) LinkedList(single、double) Tree、Binary tree binary search tree hashTable Disjoint Set Trie BloomFilter LRU Cache
算法 general code in-order/Pre-order/Post-order traversal Greedy Recursion/Backtrace Breadth-first search Depth-first search Divide and Conquer Dynamic Programming Binary Search Graph
时间复杂度
维护这个堆
维护堆顶元素
这个是O(n1)
Queue 双端队列 deque
三数之和
Linked List 就是特殊化的 Tree Tree 就是特殊化的Graph
二叉查找树
二叉排序树
分治:
if(7%2) { console.log(1)} // 这是奇数 所以会输出 1
求众数
贪心算法:
动态规划的不同点在于对每个子问题的解决方案都做出选择,不能回退。动态规划则会保存以前的运算结果,并根据以前的结果对当前进行选择,有回退功能。
【BFS(广度优先搜索)和DFS(深度优先搜索)】
BFS是一层一层地搜索,先搜索子节点,再搜索孙子节点。DFS是一插到底,先搜索子节点,以及孙子节点等等,直到没有子节点为止。然后再回溯,看看有没有漏网之鱼。
BFS更符合人类的思维习惯,DFS更符合计算机的思维习惯。
BFS底层用队列来实现,DFS在实现时常常用递归来写,但最终还是用栈
要注意 树的搜索和图的搜索的区别:是否需要记录visited
两种情况使用剪枝: 1.搜索范围过大 2.一看就不需要找
互不关联的子问题 求解