![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
poppy_bei
这个作者很懒,什么都没留下…
展开
-
动态规划
动态规划问题记住:一般用递归分析(从上往下分析),然后用循环实现(从下往上计算)。 动态规划类问题,我们一定可以找出一个递推式,比如 青蛙跳台阶:一只青蛙一次可跳1级台阶,也可以跳2级台阶,那么青蛙跳上n级台阶有多少种跳法。 从上往下分析:在第n级台阶的青蛙,上一步可以是从n-1级跳过来的,也可以是由n-2级跳过来的,如果记f(n)为青蛙到n级台阶的跳法,那么有f(n)=f(n-1)+f(n-2)...原创 2020-03-14 15:03:23 · 91 阅读 · 0 评论 -
引用传递
要点:在调用函数时发生了引用传递,注意找函数中有没有对形参(此引用)的重新赋值操作!(这里赋值指的是引用赋值引用) 1、什么时候会发生引用传递,传数组,传类(不是基本数据类型),传指针(对C来说,Java没有) 2、发生引用传递时,假设实参为A,形参为B,实参A所分配的内存空间为spaceA,此时B也指向spaceA这块空间,也就是形参实参共指向。 那么在函数中,通过B改变spaceA空间中的值,...原创 2020-03-06 22:00:53 · 2480 阅读 · 0 评论 -
时间复杂度和空间复杂度
时间复杂度和空间复杂度是对立的关系,也就是只能保证其一,以空间换时间或者以时间换空间。 比如数组和链表就是很好的例子,数组在使用前需要开辟足够大的空间,防止数据量大的情况,空间效率低,但数组开辟的是内存中一块连续的空间,在取数据时,只要按顺序依次往后取即可,时间效率高。 而,链表不是在创建的时候一次性开辟内存的,而是每添加一个节点,开辟一次内存,没有空闲的内存,空间效率高,但由于链表开辟的内存不是...原创 2020-03-06 21:17:46 · 298 阅读 · 0 评论