算法思考题
1.二叉树遍历 前序、中序、后序 时间复杂度是多少?
O(n),树的每个节点 有且仅访问一次。n为树的节点总数。
2.图的遍历时间复杂度是多少?
O(n),n为图里面的节点总数。
3.搜索算法DFS、BFS时间复杂度是多少?
O(n) n指的是搜索空间里面的节点总数。
4.二分查找 时间复杂度是多少?
O(logn)
1.二叉树遍历 前序、中序、后序 时间复杂度是多少?
O(n),树的每个节点 有且仅访问一次。n为树的节点总数。
2.图的遍历时间复杂度是多少?
O(n),n为图里面的节点总数。
3.搜索算法DFS、BFS时间复杂度是多少?
O(n) n指的是搜索空间里面的节点总数。
4.二分查找 时间复杂度是多少?
O(logn)
数据结构题目一直是面试官考察的重点。数组和字符串是两种最基本的数据结构。链表应该是面试题中使用频率最高的一种数据结构。如果面试官想加大面试难度,那么
他很有可能会选用与树(尤其是二叉树)想关的面试题。由于栈与递归调用密切相关,队列在图(包括树)的宽度优先遍历中需要用到,需账务这两种数据结构。
算法是面试官喜欢考察的另外一个重点。
查找(特别是二分查找)和排序(特别是快速排序和归并排序)是面试中经常考察的算法,应聘者一定要熟练掌握。
回溯法很适合解决迷宫及其类似的问题。如果面试题是求一哥问题的最优解,那么可以尝试使用动态规划。假如我们在用动态规划分析问题时发现每一步都存在一个能
得到最优解的选择,那么可以尝试使用贪婪算法。另外,应聘者还要掌握分析时间复杂度的方法,理解即使同一思路,基于循环和递归的不同实现,他们的时间复杂度
可能大不相同。很多时候我们会用自上而下的递归思路分析问题,却会基于自下而上的循环实现代码。
位运算是针对二进制数字的运算规则。需掌握二进制的与、或、异或运算及左移、右移操作,就能解决与运算相关的面试题。