![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法数据结构体系学习
文章平均质量分 63
以前你的名字
这个作者很懒,什么都没留下…
展开
-
算法数据结构体系学习 第十六节
2)生成一个源点到各个点的最小距离表,一开始只有一条记录,即原点到自己的最小距离为0,源点到其他所有点的最小距离都为正无穷大。3)从距离表中拿出没拿过记录里的最小记录,通过这个点发出的边,更新源点到各个点的最小距离表,不断重复这一步。2)把所有入度为0的点在图中删掉,继续找入度为0的点输出,周而复始。5)如果不会,要当前边,将该边的指向点加入到被选取的点中,重复2)4)如果会,不要当前边,继续考察剩下解锁的边中最小的边,重复3)2)某个点加入到被选取的点中后,解锁这个点出发的所有新的边。原创 2022-09-24 22:36:37 · 70 阅读 · 0 评论 -
算法数据结构体系学习 第十五节
给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。上、下、左、右相邻的1认为是一片岛,返回矩阵中 省份 的数量。原创 2022-09-18 10:46:27 · 119 阅读 · 0 评论 -
算法数据结构体系学习 第十四节
一共花费110铜板。但如果先把长度60的金条分成30和30,花费60;例如,给定数组{10,20,30},代表一共三个人,整块金条长度为60,金条要分成10,20,30三个部分。4)把x和y各自所在集合的所有点合并成一个集合,只需要小集合的代表点挂在大集合的代表点的下方即可。比如长度为20的金条,不管怎么切,都要花费20个铜板。说明: 每做完一个项目,马上获得的收益,可以支持你去做下一个项目。你来安排宣讲的日程,要求会议室进行的宣讲的场次最多。一块金条切成两半,是需要花费和长度数值一样的铜板的。原创 2022-09-11 22:58:47 · 61 阅读 · 0 评论 -
算法数据结构体系学习 第十三节
整个公司的人员结构可以看作是一棵标准的、 没有环的多叉树。除老板之外的每个员工都有唯一的直接上级。叶节点是没有任何下属的基层员工(subordinates列表为空),除基层员工外,每个员工都有一个或多个直接下级。3,对于能举出反例的策略直接跳过,不能举出反例的策略要证明有效性。2)用一种局部最功利的标准,总是做出在当前看来是最好的选择。给定一棵多叉树的头节点boss,请返回派对的最大快乐值。1,实现一个不依靠贪心策略的解法X,可以用最暴力的尝试。2.派对的整体快乐值是所有到场员工快乐值的累加。原创 2022-09-03 20:59:37 · 84 阅读 · 0 评论 -
算法数据结构体系学习 第十二节
2)在上一步的假设下,讨论以X为头节点的树,得到答案的可能性(最重要)6)写代码,在代码中考虑如何把左树的信息和右树信息整合出整棵树的信息。4)把左树信息和右树信息求全集,就是任何一棵子树都需要返回的信息S。给定一棵二叉树的头节点head,返回这颗二叉树是不是平衡二叉树。给定一棵二叉树的头节点head,返回这颗二叉树是不是满二叉树。给定一棵二叉树的头节点head,任何两个节点之间都存在距离,返回这颗二叉树中最大的二叉搜索子树的大小。给定一棵二叉树的头节点head,返回整棵二叉树的最大距离。...原创 2022-08-27 21:38:59 · 63 阅读 · 0 评论 -
算法数据结构体系学习 第十一节
1)其实就是宽度优先遍历,用队列2)可以通过设置flag变量的方式,来发现某一层的结束(看题目)实现二叉树的序列化和反序列化1)先序方式序列化和反序列化2)按层方式序列化和反序列化Encode N-ary Tree to Binary Tree如何设计一个打印整棵树的打印函数求二叉树最宽的层有多少个节点二叉树结构如下定义:Class Node {V value;Node left;Node right;Node parent;}给你二叉树中的某个节点,返回该节点的后继节点限定原创 2022-08-14 10:13:49 · 106 阅读 · 0 评论 -
算法数据结构体系学习 第十节
3)第一次到达一个节点就打印就是先序、第二次打印即中序、第三次即后序。先序:任何子树的处理顺序都是,先头节点、再左子树、然后右子树。中序:任何子树的处理顺序都是,先左子树、再头节点、然后右子树。后序:任何子树的处理顺序都是,先左子树、再右子树、然后头节点。整棵树的先序遍历 x之前的集合是A,后序遍历x之后的集合是B。2)先序、中序、后序都可以在递归序的基础上加工出来。A交B 是且仅是 X的祖先节点。...原创 2022-08-10 22:18:49 · 51 阅读 · 0 评论 -
算法数据结构体系学习 第九节
排序算法时间复杂度额外空间复杂度稳定性选择排序O(N^2)O(1)无冒泡排序O(N^2)O(1)有插入排序O(N^2)O(1)有归并排序O(N*logN)O(N)有随机快排O(N*logN)O(logN)无堆排序O(N*logN)O(1)无计数排序O(N)O(M)有基数排序O(N)O(N)有1)不基于比较的排序,对样本数据有严格要求,不易改写2)基于比较的排序,只要规定好两个样本怎么比大小就可以直接复用。...原创 2022-08-06 00:05:27 · 64 阅读 · 0 评论 -
算法数据结构体系学习 第八节
3) void delete(String str) 删掉某个字符串,可以重复删除,每次算1个。1)void insert(String str) 添加某个字符串,可以重复添加,每次算1个。4)int prefixNumber(String str) 查询有多少个字符串,是以str做前缀的。4)沿途节点的pass值增加1,每个字符串结束时来到的节点end值增加1。1)一般来讲,计数排序要求,样本是整数,且范围比较窄。1)桶排序思想下的排序都是不基于比较的排序。.原创 2022-08-02 23:11:51 · 59 阅读 · 0 评论 -
算法数据结构体系学习 第七节
给定很多线段,每个线段都有两个数[start, end],表示线段开始位置和结束位置,左右都是闭区间规定:1)线段的开始和结束位置一定都是整数值2)线段重合区域的长度必须>=1返回线段最多重合区域中,包含了几条线段手动改写堆(非常重要)系统提供的堆无法做到的事情:1)已经入堆的元素,如果参与排序的指标方法变化,系统提供的堆无法做到时间复杂度O(logN)调整!都是O(N)的调整!2)系统提供的堆只能弹出堆顶,做不到自由删除任何一个堆中的元素,或者说,无法在时间复杂度O(logN)内完成原创 2022-07-30 23:23:12 · 141 阅读 · 0 评论 -
算法数据结构体系学习第六节
几乎有序是指,如果把数组排好顺序的话,每个元素移动的距离一定不超过k,并且k相对于数组长度来说是比较小的。2,把堆的最大值和堆末尾的值交换,然后减少堆的大小之后,再去调整堆,一直周而复始,时间复杂度为O(N。手写堆结构,因为增加了对象的位置表,所以能够满足动态改信息的需求。语言提供的堆结构,如果你动态改数据,不保证依然有序。返回0的情况,就是o1与o2同样优先的情况。返回负数的情况,就是o1比o2优先的情况。返回正数的情况,就是o2比o1优先的情况。语言提供的堆结构vs手写的堆结构。...原创 2022-07-26 23:05:02 · 57 阅读 · 0 评论 -
算法数据结构体系学习 第五节
题目描述:https://leetcode.com/problems/count-of-range-sum/给定一个数组arr,两个整数lower和upper,返回arr中有多少个子数组的累加和在[lower,upper]范围上快速排序Partition过程给定一个数组arr,和一个整数num。请把小于等于num的数放在数组的左边,大于num的数放在数组的右边。要求额外空间复杂度O(1),时间复杂度O(N)给定一个数组arr,和一个整数num。请把小于num的数放在数组的左边,等于num的数放在中间,大原创 2022-07-23 19:26:39 · 626 阅读 · 0 评论 -
算法数据结构体系学习 第四节
1)整体是递归,左边排好序+右边排好序+merge让整体有序2)让其整体有序的过程里用了排外序方法3)利用master公式来求解时间复杂度4)当然可以用非递归实现归并排序复杂度T(N) = 2*T(N/2) + O(N^1)根据master可知时间复杂度为O(N*logN)merge过程需要辅助数组,所以额外空间复杂度为O(N)归并排序的实质是把比较行为变成了有序信息并传递,比O(N^2)的排序快在一个数组中,一个数左边比它小的数的总和,叫数的小和,所有数的小和累加起来,叫数组小和。求数组小和。原创 2022-07-20 23:47:41 · 58 阅读 · 0 评论 -
算法数据结构体系学习 第三节
5)使用哈希表增(put)、删(remove)、改(put)和查(get)的操作,可以认为时间复杂度为O(1),但是常数时间比较大。4)有无伴随数据,是TreeSet和TreeMap唯一的区别,底层的实际结构是一回事。T(N)=a*T(N/b)+O(N^d)(其中的a、b、d都是常数)6)放入哈希表的东西,如果是基础类型,内部按值传递,内存占用是这个东西的大小。R]范围上的最大值,是max{左部分最大值,右部分最大值}如果log(b,a)>d,复杂度为O(N^log(b,a))...原创 2022-07-17 22:34:08 · 110 阅读 · 0 评论 -
算法数据结构体系学习班 第二节
一个数组中有两种数出现了奇数次,其他数都出现了偶数次,怎么找到并打印这两种数。一个数组中有一种数出现了奇数次,其他数都出现了偶数次,怎么找到并打印这种数。一个数组中有一种数出现K次,其他数都出现了M次,要求,额外空间复杂度O(1),时间复杂度O(N)上面的两个性质用无进位相加来理解就非常的容易。怎么把一个int类型的数,提取出最右侧的1来。所以,异或运算就记成无进位相加!2.异或运算满足交换律和结合率。异或运算相同为0,不同为1。同或运算相同以1,不同为0。找到,出现了K次的数,...原创 2022-07-14 21:44:04 · 65 阅读 · 0 评论 -
算法数据结构体系学习班 第一节
1)时间复杂度(流程决定)2)额外空间复杂度(流程决定)常数项时间(实现细节决定)常数时间的操作确定算法流程的总操作数量与样本数量之间的表达式关系只看表达式最高阶项的部分如果一个操作的执行时间不以具体样本量为转移,每次执行时间都是固定时间。称这样的操作为常数时间的操作。常见的算术运算(+、-、*、/、%等)·常见的位运算(>>、>>>、...原创 2022-07-11 21:36:18 · 94 阅读 · 0 评论