空间复杂度,是对一个算法在运行过程中临时占用存储空间大小的量度,记做:
    S(n)=O(f(n))
    其中,n为问题的规模,f(n)为语句关于n所占存储空间的函数。

    在我们实际工作中,常常会需要利用空间来换取时间上的性能提升。
    比如:我们给定一个保存年份的数组,里面保存了许多年份的值,现在我们要计算出这个数组中随机位置的年份是否是闰年。
    那么最直接的方法就是:
    每计算一次,我就到相应位置取出年份,然后计算其是否是闰年,然后返回结果。
    对于这种简单的计算闰年来说,每一次计算的时间是很短的,所以,在取到重复位置的年份,重复的计算也不会浪费多少时间,但是,如果将数组换成计算量非常大的内容的时候,那么每次重复计算,都会浪费大量时间。所以,在牺牲空间的情况下的做法就是:
    事先建立好另一个数组,在计算的时候,优先从该数组中取对应下标的结果,如果结果不存在,则取出原数组的数据进行计算,然后保存到另一个数组中对应下标的位置,这样就保证了,我每一个数据都只会做一次计算。

    通常,我们都是用“时间复杂度”来指运行时间的需求,用“空间复杂度”指空间的需求。当直接让我们求“复杂度”时,一般都是指的求时间复杂度。