01 2023 档案
数据结构 玩转数据结构 12-1 平衡树和AVL
摘要:0 课程地址 https://coding.imooc.com/lesson/207.html#mid=14346 1 重点关注 1.1 本节关注重点 平衡二叉树的重新定义,标注节点高度,平衡因子 1.2 平衡二叉树的重新定义 和堆,线段树等对比,这里的平衡二叉树指的是 对于任一节点,左子节点和右子
阅读全文
数据结构 玩转数据结构 9-7 更多线段树相关的话题
摘要:0 课程地址 https://coding.imooc.com/lesson/207.html#mid=13849 1 重点关注 2 课程内容 2.1 区间更新 懒惰更新方法,使用lazy数组记录未更新的内容。 更新的时候只需要更新到节点,以后再做查询或者更新的时候,再对节点及子节点进行操作。 2.
阅读全文
数据结构 玩转数据结构 9-6 线段树中的更新操作
摘要:0 课程地址 https://coding.imooc.com/lesson/207.html#mid=13848 1 重点关注 1.1 线段树中的更新操作 见3.1 2 课程内容 3 Coding 3.1 leetCode307问题解析 需求 给你一个数组 nums ,请你完成两类查询。 其中一类
阅读全文
数据结构 玩转数据结构 9-5 Leetcode上线段树相关的问题
摘要:0 课程地址 https://coding.imooc.com/lesson/207.html#mid=13847 1 重点关注 1.1 线段树应用场景 如3.1和3.2对比,不可变的数组进行逻辑运算时,数组运行速度更快,但是用线段树也未尝不可 如3.3运行时间,当进行单元素更新操作时,数组的时间复
阅读全文
数据结构 玩转数据结构 9-4 线段树中的区间查询
摘要:0 课程地址 https://coding.imooc.com/lesson/207.html#mid=13846 1 重点关注 1.1 线段树区间查询 见3.1 2 课程内容 3 Coding 3.1 线段树区间查询代码实现 关键图 关键代码 //3 查询线段树区间 public E query(
阅读全文
数据结构 玩转数据结构 9-3 创建线段树
摘要:0 课程地址 https://coding.imooc.com/lesson/207.html#mid=13845 1 重点关注 1.1 创建线段树 见3.1 1.2 代码如何引入方法 见3.1 2 课程内容 3 Coding 3.1 创建线段树代码实现 关键图 关键代码 /** * 初始化数组元素
阅读全文
数据结构 玩转数据结构 9-2 线段树基础表示
摘要:0 课程地址 https://coding.imooc.com/lesson/207.html#mid=13844 1 重点关注 1.1 平衡二叉树,完全二叉树,满二叉树区别 满二叉树:除了叶子节点,所有节点都有左子节点和右子节点。 完全二叉树:把元素顺序排列成树的形状 平衡二叉树:所有的叶子节点的
阅读全文
数据结构 玩转数据结构 9-1 什么是线段树
摘要:0 课程地址 https://coding.imooc.com/lesson/207.html#mid=13843 1 重点关注 1.1 线段树解决的问题 墙体染色 区间查询 某区间天空天体数量 1.2 使用线段树和使用数组对比时间复杂度 实现方式 数组 线段树 更新 O(n) O(logn) 查询
阅读全文
数据结构 玩转数据结构 8-9 和堆相关的更多话题和广义队列
摘要:0 课程地址 https://coding.imooc.com/lesson/207.html#mid=13746 1 重点关注 1.1 d叉堆,哪种性能更优 d叉堆, a 复杂度为O(logdN), b 每个分支需要判断d种情况 ab效率是相反的,找到其平衡点即是效率最优 1.2 广义队列 普通队
阅读全文
数据结构 玩转数据结构 8-8 Java中的PriorityQueue
摘要:0 课程地址 https://coding.imooc.com/lesson/207.html#mid=13745 1 重点关注 1.1 用java自带的优先队列实现取前k个高频元素问题 见3.1 1.2 最小堆和最大堆应用实现优先队列的对比 java自带的优先队列是最小堆,注意3.1 compar
阅读全文
数据结构 玩转数据结构 8-7 Leetcode上优先队列相关问题
摘要:0 课程地址 https://coding.imooc.com/lesson/207.html#mid=13744 1 重点关注 1.1 用手写的优先队列实现取前k个高频元素问题 见3.1 1.2 自定义compare compare有默认的,但是也可以自定义,参考3.1 1.3 比较map的val
阅读全文
数据结构 玩转数据结构 8-6 基于堆的优先队列
摘要:0 课程地址 https://coding.imooc.com/lesson/207.html#mid=13743 1 重点关注 1.1 基于堆的优先队列 见3.1 1.2 泛型使用 见3.1 方法中只要拿定义就好了,不需要extends 1.3 优先队列常用方法 getSize isEmpty 入
阅读全文
数据结构 玩转数据结构 8-5 Heapify 和 Replace
摘要:0 课程地址 https://coding.imooc.com/lesson/207.html#mid=13742 1 重点关注 1.1 最大二叉堆替换元素replace 见3.1 1.2 普通数组转最大二叉堆Heapify 见3.1 1.3 replace和Heapify是如何提高效率的 repl
阅读全文
数据结构 玩转数据结构 8-4 从堆中取出元素和Sift Down
摘要:0 课程地址 https://coding.imooc.com/lesson/207.html#mid=13741 1 重点关注 1.1 二叉堆删除元素 见3.1 2 课程内容 3 Coding 3.1 向最大二叉堆删除元素 关键代码 /** * 最大堆元素的下沉(删除堆顶元素) * @author
阅读全文
数据结构 玩转数据结构 8-3 向堆中添加元素和Sift Up
摘要:0 课程地址 https://coding.imooc.com/lesson/207.html#mid=13740 1 重点关注 1.1 二叉堆插值 见3.1 2 课程内容 3 Coding 3.1 向最大二叉堆添加元素 关键代码 /** * 最大堆新增元素 * 1 先加入到最大二叉堆实现的 队列中
阅读全文
数据结构 玩转数据结构 8-2 堆的基础演示
摘要:0 课程地址 https://coding.imooc.com/lesson/207.html#mid=13739 1 重点关注 1.1 二叉堆定义 二叉堆是一个完全二叉树 1.2 二叉堆的性质 最大堆:堆中某个节点的值总是不大于其父节点的值。 1.3 用数组存储二叉堆 parent(i) = (i
阅读全文
数据结构 玩转数据结构 8-1 什么是优先队列
摘要:0 课程地址 https://coding.imooc.com/lesson/207.html#mid=13738 1 重点关注 1.1 什么是优先队列 普通队列:FIFO 优先队列:出队顺序和入队顺序无关,和优先级有关 如任务管理器,动态选择优先级高的任务进行处理 1.2 优先队列用什么实现 普通
阅读全文
数据结构 玩转数据结构 7-9 Leetcode上更多集合和映射的问题
摘要:0 课程地址 https://coding.imooc.com/lesson/207.html#mid=13711 1 重点关注 1.1 结论 3.1和3.2对比 3.2空间复杂度优于3.1 3.3和3.4对比 HashMap无序速度优于TreeMap(见3-2,HashSet实现) https:/
阅读全文
数据结构 玩转数据结构 7-8 映射的复杂度分析和更多映射相关问题
摘要:0 课程地址 https://coding.imooc.com/lesson/207.html#mid=13710 1 重点关注 1.1 结论 使用二叉树实现集合Set性能优于使用链表实现集合Set. 1.2 链表和二叉树实现 集合类复杂度分析 链表的时间复杂度为O(n),n为元素个数, 二叉树的时
阅读全文
数据结构 玩转数据结构 7-7 基于二分搜索树的映射实现
摘要:0 课程地址 https://coding.imooc.com/lesson/207.html#mid=13709 1 重点关注 1.1 使用二叉树实现映射Map 详见3.1用二叉树实现映射Map 2 课程内容 3 Coding 3.1 使用二叉树实现映射Map 需求 使用二叉树实现的映射统计 傲慢
阅读全文