亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

【九月打卡】第14天 算法與數據結構筆記4

標簽:
Java

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

课程内容:

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

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

为什么要使用线段树

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

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

课程收获

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

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消