2024年零基础的我刷力扣一周后,总结了点东西_力扣适合初学者吗(1)

程序优化完后,运行一结束。诶诶,快停,记录时间!!看看快了没!

而这个时间,为实际时间,也可以说是绝对时间,但是这个时间能被很多因素影响

而这个因素就有很多了,硬件,软件,系统等…

所以进引入了相对时间的计时方法,也就是时间复杂度,来判断我们的程序是否得到了优化

规定,一段程序的时间由时间复杂度来表示。

而时间复杂度又分为三种,最优情况最劣情况平均情况。而这个情况是由问题来决定的

比如:我们将某个正在军训的班级拉出来一排,一排五个人,让他们从左到右依次报数(从1开始)
用这个数来代表他们本来的名字,作为代号
而我们需要找一个叫做张三的人

不过我们不能大声问谁是张三,只能根据代号挨个去问
如果张三的代号为1,那么我们只需要寻找一次就可以
如果为3那么我们需要寻找3次
如果为5或者张三不在这一排,我们就必须查找5次才能得到结果

而这个第一种情况就是最优情况,为O(1),第三种情况为最劣情况,也就是O(n)

通常使用最劣情况来表示一个程序的最终情况,也就是O()

一个简单的赋值语句,判断语句的时间复杂度为O(1),而不管你这个语句有多长,只要他是切实能写出来的次数,都是O(1)

循环语句根据循环的次数的变化而分为O(1),O(N),上面说过O(1)那么O(n)就是循环的次数随着题目或者问题的改变而改变的,就属于O(n)

而判断整个程序时间复杂度的方法为,以时间复杂度最高的为主:也就是说,就算你赋值了1000000个变量,而循环结果是随时间变化的,那么你的程序的时间复杂度为:O(n)

因为随着循环次数的增加,也就是n->无穷大,你的变量数目,也会相对于n来说越来越小。

所以可以忽略不计,为O(1)*O(n)==O(n)

常见的时间复杂度:O(1),O(logn),O(n),O(nlogn),O(n*2),O(2**n)O(n!)

按照从小到大的顺序排列

2. 空间复杂度O()

空间复杂度也具有相同的概念,只是有些地方变得不太一样了

如果说时间还能掐秒计算时间,那么占用空间就没那么好计算了,难不成,你去看看代码多少航,行多的占用内存就大吗?这也不是,有的代码很少,但是需要占用的内存多,有的代码看着很多,但是占用内存很小

空间复杂度是想对占用空间,比如说,你的程序创建100个变量接收了100个数字,字符串,在空间复杂度里面属于O(1),而你创建一个数组,哈希表,栈等就是O(n)

三、刷题小结

自从开始刷力扣,也有些许日子了,从一开始的每日一题,到每日两题,再到学习学到无聊的时候就去刷题,也算是经历了一番蜕变。

从一开始的什么都不懂,做题全靠暴力破解,但现在掌握了几个方法。

也了解了一些关于数据结构与算法的小知识

学习新知识固然重要,但是也需要总结之前的知识,毕竟温故而知新嘛

1. 二分法</

  • 16
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值