美文网首页
漫步数据结构与算法系列之 空间复杂度

漫步数据结构与算法系列之 空间复杂度

作者: 佳佳爱科技AITech | 来源:发表于2020-05-08 22:29 被阅读0次

空间复杂度可以理解为一段程序在内存空间分配了多少,程序使用了多少空间或者内存规模。相比时间复杂度,空间复杂度非常简单直观。空间复杂度主要通过两个特征来把握

1. 数组的长度

2. 使用了递归,看递归的深度。递归深度就是其空间复杂度

递归若结合了数组的使用。则看二者谁占用的空间最大,取最大值为空间复杂度。一般我们认为最坏发生的可能结果才是最终的结果。

举例:使用了数组,在内存中分配了一段连续的存储空间。传入的元素个数,就是程序的空间复杂度。

o (n)空间复杂度

例子中,我存入了int 类型的5个元素,最后得到这个数组n的长度就是5. 这5个元素在内存中就是一段连续的存储空间。所以空间复杂度o(n)。 n代表元素有多少,就分配多少内存。不多不少。

借用LeetCode 70 爬楼梯,来判定程序空间复杂度

题目:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。

示例 1:当 n = 2 ;答案:两种方法。

解释: 第1种方法:1 阶 + 1 阶 ;第2种方法:直接爬2 阶。所以共两种方法

示例 2:当n = 3 ; 答案:三种方法。

解释: 有三种方法可以爬到楼顶。

方法1: 1 阶 + 1 阶 + 1 阶;

方法2:1 阶 + 2 阶 ;

方法3:2 阶 + 1 阶。

思路一: 递归

递归思想

爬楼梯问题实质是斐波那契数列。很自然想到递归来实现:

想求抵达第n层的方法,取决于(n-1)层和(n-2)层方法之和。因为当爬到第n-1层或者第n-2层,根据题目所述,下一步都会是第n层。(因为一步一步爬,也可以一次爬两层);同理,n-1层取决于n-2,n-3... 以此类推

可是,递归构建的树形结构,所有左边分支都是层数减1, 右边分支都是层数-2。 生成了大量重复节点的计算,且递归的深度是n层。 由下图可以看到。每一个f() 占据一个内存空间,层层嵌套,直至满足递归的退出条件,n==0 or n==1 (return 1)。所以,用递归来解决爬楼梯问题,空间复杂度非常高。o(n)

递归

思路二:动态规划法

动态规划思路

动态规划算法的核心思想是自底向上的分析问题,先着眼于小问题,才能解决大问题。可以参考代码的注释。例子中,所有的爬楼梯第n层方法,都是从爬一层和爬两层的方法数之和算起。

总结:用动态规划法,我们只是定义了first,second,third变量。并没有引入数组,开辟内存空间存放数据。也没有递归函数的出现。一层循环,所以时间复杂度是O(n);空间复杂度是O(1) 常量级内存空间。

相关文章

  • 数据结构与算法 - 树形结构

    数据结构与算法系列文章数据结构与算法 - 时间复杂度数据结构与算法 - 线性表数据结构与算法 - 树形结构 目录 ...

  • 数据结构与算法 - 查找

    数据结构与算法系列文章数据结构与算法 - 时间复杂度数据结构与算法 - 线性表数据结构与算法 - 树形结构数据结构...

  • 数据结构与算法

    数据结构与算法之美 数据结构与算法之美1--如何学数据结构与算法之美2--复杂度分析(上)数据结构与算法之美3--...

  • 一位算法工程师的自我修养

    数据结构与算法 基本算法思想动态规划贪心算法回溯算法分治算法枚举算法 算法基础 时间复杂度 空间复杂度 最大复杂度...

  • 数据结构与算法-复杂度分析

    时间、空间复杂度:衡量算法执行小路的指标,数据结构与算法离不开时间、空间复杂度分析,复杂度分析是算法的精髓。 为什...

  • 数据结构学习大纲

    第一章 绪论 数据结构基本概念数据结构基本概念算法的基本概念算法的时间复杂度与空间复杂度分析基础时间复杂度分析空间...

  • 漫步数据结构与算法系列之 空间复杂度

    空间复杂度可以理解为一段程序在内存空间分配了多少,程序使用了多少空间或者内存规模。相比时间复杂度,空间复杂度非常简...

  • 实用数据结构与算法

    前言   本文主要介绍在现实生产环境使用较多的高效搜索数据结构与算法。空间、性能、实现复杂度一直都是数据结构与算法...

  • 八大内部排序总结

    程序 = 数据结构 + 算法 程序好坏 = 时间复杂度 + 空间复杂度 + 应用场景 如何选择算法应用的场景:根据...

  • 字节算法大神熬了三个通宵整理的数据结构与算法笔记(万字长文)

    数据结构与算法(一) 时间&空间复杂度 数据结构和算法的本质是解决“快”和“省”的问题:即如何让代码运行得更快、更...

网友评论

      本文标题:漫步数据结构与算法系列之 空间复杂度

      本文链接:https://www.haomeiwen.com/subject/qfyzghtx.html