在面试的过程中很多面试者一看到复杂问题,脑子就一片空白,感觉像在看天书。但其实,大部分题都能拆成「小一号的问题」,也就是所谓的子问题。
这在面试里是非常吃香的思路,因为它意味着:
✅ 你具备「分解」复杂系统的能力
✅ 你在日常工作中能做渐进式解决方案
✅ 你不是靠背答案,而是真的会解决问题
二叉树求最大深度
问题看起来是要找「最长路径」,很多人开始就懵了。
其实你只要反问自己一个问题:
如果我已经知道左子树和右子树的深度,我是不是就能知道整棵树的深度?
没错,就是这样一句话,问题就被拆解了。
所以我们反过来看:
maxDepth(root) = 1 + max(maxDepth(root.left), maxDepth(root.right))
👆 这个公式一出,代码自然而然就写出来了。
这题很多人第一反应就是“暴力双循环”,然后自己把时间复杂度做到了 O(n²)……甚至还有 O(n³) 的(真的不骗你,我见过)。
但其实,冷静想一想:
如果我已经知道以 A[i-1] 结尾的最大子数组和,那 A[i] 要不要拼上它?要不要重新开始?