第四章 解决面试题的思路
4.1 面试官谈面试思路
- 做事前明白自己要做的事情是什么,该怎么做
- 讲具体的问题分析过程,有些分析需要证明
- 在写代码前解释清楚自己的思路,没想清楚最好不要动手。可以采用举例子,画图等方式解释清楚问题和解决问题的思路
4.2 画图让抽象问题形象化
面试题19:二叉树的镜像,完成一个函数,输入一个二叉树,该函数输出它的镜像。
-
- 思路:先序遍历,非叶子结点左右子树互换,递归处理。
- 测试用例:功能测试(普通二叉树,所有二叉树只有左子树或右子树,只有一个节点的二叉树),特殊输入测试(二叉树根结点为null)
面试题20:顺时针打印矩阵,输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
-
- 思路:矩阵是一圈一圈的被打印出的,所有首先应该确定社么时候停止打印一圈数字,其次编写代码打印出每一圈的数字,此时需要注意边界条件
- 测试用例:多行多列,只有一列,只有一列,只有一行一列。
4.3 举例让抽象问题具体化
面试题21:包含min函数的栈,定义栈的数据结构,在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min,push和pop的时间复杂度都是O(1)。
面试题22: