1. 数组作为函数参数:
- 形参是指针和数组长度,或首尾指针。
- 实际参数是数组,形参应该是指针
2. trapping rain water算法改进:
- 计算每个bar的存水量(对每个bar,扫描左右bar的高度,得到左右最高,计算存水量),时间n2,空间1
- 改进:计算每个bar的存水量(分别从左右扫描数组,用两个数组记录每个位置的左最高和右最高,结合后得到每个bar的左右最高),时间n,空间n
- 一种技巧,适用于某元素的所求量需要左右元素确定的问题。整体扫描可以把时间复杂度化为n。
- 改进:计算每个bar的存水量,还是需要两两边的高度。两遍夹逼,空间复杂度从2n降到n。
评估算法的复杂度,尝试不同的算法。
3. 双指针
c语言的函数调用:本质是代码块之间的双向数据传递和执行控制转移。数据传递通过参数和返回值进行,由于函数参数和局部变量都通过栈来操作,(而不是全局区)所以传递的是原数据的值的副本,无法改变原值。(全局区内的变量就可以改变)
如果想要改变,需要传递数据的地址,通过取值改变取值过程实现。不管这个数据是什么类型。例:如果要改变一个指针,就要传递双指针。