
数据结构
文章平均质量分 84
->yjy
所有的惊艳都历经平庸
展开
-
Huffman编码
java原创 2024-04-28 15:40:34 · 911 阅读 · 0 评论 -
最小生成树
我们来参考一张图我现在的需求不是要所有的边,我想在这些边里面找六条边,因为七个顶点,六条边就够了我要找的这六条边需要是总成本最小的,也就是权重和最小的.这个需求在现实生活中也是有意义的,假设这是你家的七个开关,我现在要铺设电线,把这七个开关连通,铺设方式很多种,但是我要找一个成本最低的.这便是最小生成树问题!原创 2024-04-27 11:17:10 · 391 阅读 · 0 评论 -
数据结构-图
本题需要记录每个节点到其它节点的最短路径,所以通过Floyd算法,使用dp数组更新所有节点到其余节点的最短路径,最后dp数组保留的就是所有节点到其余节点的最短路径,使用num数组记录,每个节点到其它节点的最短路长度小于distanceThreshold的个数,找出最少的个数的起点i就是答案。如果两个顶点之间存在路径,则这两个顶点是连通的,所有顶点都连通,则该图被称之为连通图,若子图连通,则称为连通分量。例如,1->6 的距离是 14,而1->3->6 的距离是11。这时将距离更新为 11。原创 2024-04-26 21:46:52 · 927 阅读 · 1 评论 -
哈希表实现[很详细!]
int hash;//哈希码Object key;//键//值Entry next;//数组存链表头指针即可//选择2^nint size=0;//元素个数。原创 2024-04-22 21:04:13 · 1019 阅读 · 1 评论 -
Java实现AVL树
二叉搜索树如果不是这种不平衡的情况,时间复杂度可以达到O(logn) 但是像图中的这种不平衡情况时间复杂度为O(n),那么如何解决呢?ta的实现有很多种,但其中一种比较著名的实现叫做AVL,为什么叫AVL呢?是因为有两位作者一位取了名字中的AV,另外一个取了L,所以叫AVL树。RL就是对右子树进行一次右旋,失衡节点进行一次左旋;基于以上的实现,我们可以写一个方法检查节点是否失衡,重新平衡代码。求节点高度的时候可以参照前面写过的求二叉树最大深度的题目。上面的例子中没有考虑黄色节点有右孩子(绿色节点)的情况。原创 2024-04-21 15:27:01 · 758 阅读 · 0 评论 -
数据结构 -- 二叉树&二叉搜索树
这样看似prev = node.val 也就是 prev = 5,但因为你的prev是作为一个参数,是对整个方法中生效的,也就是4这个点有doValid(node.left,prev) 和 doValid(node.right,prev)这两个prev都是4这个点传入的prev并不会说因为在doValid(node.prev)中prev=5导致这个方法的所有prev都变为了5,本质也就是这个参数只是这个方法的局部变量,局部变量的修改不会影响到其他的方法。如何知道右子树处理完成呢?原创 2024-04-20 17:24:47 · 1892 阅读 · 0 评论 -
数据结构 -- 堆
例子:比如实例1中第三个元素是1 所以咱们什么也不做 接着看下一个数字5,发现5比堆顶元素2大,那么就要进行替换,然后重新调整小顶堆。在数组中用堆排序并不是最优的选择因为有更优秀的算法.但是对于这道题目,最好的选择就是使用堆了.实例二:求第k=4大,我们可以先把数组前四个小顶堆中(当然了大顶堆也可以 但是这里用小顶堆)一部分是较小的数据 大概占一半 一部分是较大的数据 从小的里面挑大的 大的里面挑小的。如果新加进来的元素比堆中的元素逗都小,那么我们什么也不做。如果进来的元素大就替换掉堆顶元素。原创 2024-04-04 14:35:35 · 935 阅读 · 0 评论