1. 编程题训练方法和积累思路
解决问题分为2步
- 有解题思路 => 记忆思路,多刷几次,形成
题目->思路快速映射记忆
,并在面试前进行快速回顾。 - 思路转换为代码 => 明确思路,明确定义变量的含义。 分类刷题,摸索总结思路,总结题型(比如循环不变量,递归)
2. 二分查找
循环不变量
- 明确变量定义
- 改变变量定义
- 总结: 如何写出正确的程序
3. 快速排序和partition函数
-
快速排序的主体
-
partition实现
-
手写过程
4. 递归和系统调用栈的关系
-
反转链表(递归和迭代) // 未处理
-
以二叉树前序遍历讲解: 递归和系统调用栈的关系
-
从尾到头打印链表(借助栈或直接利用系统调用栈 )
TODO: 该题是否有空间复杂度为O(1)且不用递归的实现方式。
其他
补充的资料,关于函数调用栈