加入收藏 | 设为首页 | 会员中心 | 我要投稿 通化站长网 (https://www.0435zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 动态 > 正文

5G基建规模领先全球

发布时间:2021-01-31 15:45:08 所属栏目:动态 来源:互联网
导读:这个例子中我们声明了一个数组,我们知道数组中是可以存各种类型的,在循环中,我们根据 n 的大小向数组 arr 中 push 元素,所以,n 多大,数组就有多少元素,就占用了多少空间,所以空间复杂度S(n) = O(n) 「空间复杂度小结」 空间复杂度里,只列出了两个例

这个例子中我们声明了一个数组,我们知道数组中是可以存各种类型的,在循环中,我们根据 n 的大小向数组 arr 中 push 元素,所以,n 多大,数组就有多少元素,就占用了多少空间,所以空间复杂度S(n) = O(n)

「空间复杂度小结」

空间复杂度里,只列出了两个例子,是因为一般情况下,我们用不到其他的,空间复杂度一般只会是 O(1)/O(n)/O(n^2),其它的很少见,当然也有,我们在知道了时间复杂度再分析空间复杂度也很好分析,就不过多赘述了

关于分析空间复杂度,其实我们直接从声明的变量入手就可以,看函数体内声明的变量根据传入值的变化而变化来分析

另外,这里我们没有列举递归情况,「请注意」,递归就是函数套函数,像俄罗斯套娃一样的,这中间其实有一个问题,我们知道,递归函数,每层递归里都会开辟一个递归栈,每次递归产生的变量等空间消耗都会存在递归栈中,这也是一个空间,不管你有没有声明变量,只要递归了递归栈它都存在,也就是说只要存在递归的情况,基本上最少的空间复杂度也是 O(n) 了,所以我们尽可能的在能使用迭代的情况下就不使用递归

时间 VS 空间

开头我们说了,评价一个算法的效率我们主要是从它的时间和空间两个维度看,但是,通常我们在算法中,时间和空间就是鱼和熊掌的关系,这时候可能一道算法题有两种解法,一种时间复杂度低,但空间复杂度稍高,另一种则反之

这个时候怎么办呢?细品就知道了,在开发中,我们一般都是时间优于空间的,你想啊,一个程序,用户不会关心的占用了多少内存,但是他会关心你这个程序他在使用时的执行速度,况且,空间也就是磁盘,现阶段磁盘我们可以花钱扩容,时间上就没这么简单了,所以某些相对的情况下,空间换时间是可以令人接受的

虽说空间换时间可行,但也不能一味的空间换时间,我们还是要尽可能降低两个维度的复杂度,少数对立情况下,可空间换时间

我们在刷算法的时候,不是刷完了就完事了,我们还要去分析我们的题解对应的时间及空间复杂度,可以分析多种题解之间的复杂度,对比找出最优解

在面试的时候,假如面试官给你一道算法题,当你知道好几种解法的时候,完全可以很装B的问一下,您喜欢时间至上还是空间至上呢,我都能解,奥利给,说完他就会让你都写了??

开个玩笑哈,面试的时候尽量写出多种解法并给面试官解释各种解法时间及空间复杂度的不同,怎么说?就很棒

最后

此文介绍算法一些理论基础,理解之后就可以刷题了,推荐按照数据结构类型来每天刷一题,建议上班无聊时刷题,上班摸鱼水群不如摸鱼刷道算法,百利无一害,坚持每天刷题吧,加油

GitHub建了个算法仓库,从零更算法题/文字/视频 题解ing,一块来刷吧 ?? GitHub传送门[1]

准备算法每篇每题都录个视频版,主要是为了跟思路讲一遍手写下,讲的可能不好,此文视频详见 ?? B站传送门[2]

看到这里了,来个三连吧,如有错误请指正,也欢迎大家关注公众号「不正经的前端」,和算法群的朋友们组团刷算法,效率更高

 

(编辑:通化站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!