为了账号安全,请及时绑定邮箱和手机立即绑定
首页 手记 【九月打卡】第14天 算法与数据结构笔记4

【九月打卡】第14天 算法与数据结构笔记4

2022.09.19 20:23 29浏览

课程名称算法与数据结构
课程章节冒泡排序,希尔排序和排序算法大总结 1-4冒泡排序还能排序
主讲老师:Liuyubobobo

课程内容:

什么是线段树?(区间树)

  • 一棵二叉树的每个节点是存储的一个区间或者说是一个线段相应的信息,这里说的相应的信息不是指把这个区间内的元素都存进去,我们以求和为例,每一个节点相应存储的是这个节点所对应区间的数字的和。

为什么要使用线段树

最经典的线段树问题:区间染色
  有一面墙 ,长度为n,每次选择一段儿墙进行染色,m次操作后,我们可以看见多少种颜色?
图片描述

例如上图,我们第一次将[1,8]的位置染成蓝色,然后再将[5,9]的位置染成黄色,然后将[6,15]的位置染成红色,最后把[12,15]的颜色染成绿色,我们通过这几次操作可以发现,图中被重复染色的位置是会被覆盖的,比如[12,15]这个位置显示被染成红色,然后又被染成了绿色,但最后呈现的是绿色。我们也可以把“m次操作后,我们可以看见多少种颜色”这个问题,转化为“m次操作后,我们可以在[i, j]区间内看见多少种颜色”问题。对于这个问题我们可以使用数组来解决,但我们会发现,在使用数组实现的时候,不管是染色操作(更新区间),还是查询操作(查询区间),都需要对数组进行遍历,这样使用数组实现区间染色问题的时间复杂度就是O(n)。但这个时间复杂度的程序执行起来,数据量如果大了,执行效率是很低的。所以有了线段树这样的数据结构。

课程收获

通过本次学习我了解了 线段树的基本概念,受益良多。
图片描述

点击查看更多内容
0人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
学生
手记
粉丝
0
获赞与收藏
0

关注TA,一起探索更多经验知识

同主题相似文章浏览排行榜

风间影月说签约讲师

50篇手记,涉及Java、MySQL、Redis、Spring等方向

进入讨论

Tony Bai 说签约讲师

146篇手记,涉及Go、C、Java、Python等方向

进入讨论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消