
视频笔记
傻梨吃渣梨
这个作者很懒,什么都没留下…
展开
-
左神算法笔记: 5. 二叉树的基本算法
::二叉树不能形成环:: 先序、中序、后序遍历 先序:对任意一个子树的处理顺序,都是先头结点、再左子树、再右子树 中序:左头右 后序:左右头 [image:710374ED-4483-43C6-8740-52B0AB1597BA-22873-00006BA364335C85/iShot2020-12-18 20.40.44.png] 非递归方式实现二叉树的先序、中序、后序 任何递归函数都可以改成非递归 自己设计压栈的来实现 先序实现逻辑: 放入head 循环(如果栈不为空) 出栈为head 打印h原创 2020-12-19 11:01:43 · 284 阅读 · 1 评论 -
左神算法笔记: 4. 链表常见面试题
链表面试题常用的数据结构和技巧 使用容器(哈希表、数组等) 快慢指针 eg1. 找到一个链表的中间节点 eg2. 回文结构 笔试:全放到栈里,一个个弹出,从首节点开始比较 面试:链表的方法需要注意边界 eg3. 将单向链表按某值划分成左边小、中间相等、右边大的形式 笔试:把链表放入数组里,在数组上做partition 面试:分成大、中、小三部分,再把各个部分之间串起来 eg4. 一种特殊的单链表节点的描述如下 class Node { int value; Node原创 2020-12-13 17:20:27 · 106 阅读 · 0 评论 -
左神算法笔记: 3. 比较器与堆
algorithem/左神算法/基础 完全二叉树 一种想象的数据结构 实际是组数: 使用0节点 左子节点:2i + 1 右子节点:2i + 2 父节点:( i - 1 ) / 2 不使用0节点 左子节点:2i 右子节点:2i + 1 父节点:i / 2 堆排序 ::堆排序的额外空间复杂度为O(1):: 先让整个数组都变成大根堆结构,建立堆的过程: 从上到下的方法(生成heap),时间复杂度为O(N*logN) 把堆的最大值(root)和堆末尾的值交换,然后减少堆的大小,做一原创 2020-12-11 02:16:54 · 301 阅读 · 0 评论 -
左神算法笔记: 2. 线段树(区间修改数)
algorithem/左神算法/基础 更快速的、区间的更改、查询一些东西 eg. 实现一种数据结构使得以下三种计算的时间复杂度为O(logN ) void add(arr, L, R, V); :将arr数组中的第L到R的数都增加V void update(arr, L, R, V);:将arr数组中的第L到R的数都修改V int getSum(arr, L, R);:将arr数组中的第L到R的数相加 需要多少空间: 最好情况:恰好是N = 2^n个数字,例如8,需要2N-1个空间 < 2N的空间原创 2020-12-11 02:13:13 · 387 阅读 · 0 评论 -
左神算法笔记: 1. 认识复杂度、对数器、二分法与异或运算
#algorithem/左神算法/基础 #sorting #XOR 评估算法优劣的核心标准 时间复杂度(流程决定) 额外空间复杂度(流程决定) 常数项时间(实现细节决定) 常数时间的操作 算数运算-加减乘除 位运算( >>[带符号右移]/ >>>[不带符号右移]/ <</ |/ &/ ^) 赋值、比较、自增、子减 数组寻址 三种排序 选择排序:遍历整个数组找最大,放在最后 冒泡排序:相邻的两个数比较谁大谁放在后面 插入排序:第k次循环的时候原创 2020-12-11 02:11:58 · 386 阅读 · 0 评论