![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
X_HHY
这个作者很懒,什么都没留下…
展开
-
简单了解红黑树
红黑树底层数据结构: (特殊的)二叉查找树(节点:左小,右大) 红黑树的性质(重点): 1)每个节点不是红的就是黑的 2)不可能有连接在一起的红色节点 3)根节点都是黑色的root 4)每个红色节点的两个节点都是黑色的:出度为0满足了性质就可以近似的平衡了,不一定要变红,也可以为其他的。 为了满足红黑树的性质出现了旋转 1.改变颜色:最简单 红变黑,黑变红 2.左旋:逆时针(向左移动) 3.右旋:顺时针(向右移动) 旋转和颜色变换的规则:所有的节点都是红色的,如不满足红 黑树的性质,即开始旋转。 图片原创 2020-09-22 20:51:05 · 82 阅读 · 0 评论 -
递归 & 迭代,解力扣101.对称二叉树
递归 & 迭代,解力扣101.对称二叉树 紧跟上一篇,继续理解递归与迭代。 递归解法 思路: 如果一个树的左子树与右子树镜像对称,那么这个树是对称的。 如果同时满足下面的条件,两个树互为镜像: 它们的两个根结点具有相同的值 每个树的右子树都与另一个树的左子树镜像对称 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * Tre原创 2020-06-09 19:49:00 · 187 阅读 · 0 评论 -
迭代式快排与递归式快排
迭代式快排与递归式快排 迭代式快排 在迭代解决方案中,我们将使用堆栈。下面是在Java中实现迭代快速排序的步骤: 1.将范围(0…n)推入堆栈 2.使用数据透视表对给定数组进行分区 3.弹出顶部元素。 4.如果范围有多个元素,将分区(索引范围)推入堆栈 5.执行上述3个步骤,直到堆栈为空 public static void iterativeQsort(int numbers) { Stack stack = new Stack(); stack.push(0);原创 2020-06-09 19:28:28 · 257 阅读 · 0 评论 -
算法入门第三课
算法入门第三课 题目一: 比较器的使用 1)比较器的实质就是重载比较运算符。 2)比较器可以很好的应用在特殊标准的排序上 3)比较器可以很好的应用在根据特殊标准排序的结构上 实现Comparator接口 重写compara()方法 题目二 桶排序思想下的排序 1)计数排序,词频统计(区间小适合) 2)基数排序(数据必须是十进制,最好是正数) 分析: 1)桶排序思想下的排序都是不基于比较的排序 2)...原创 2020-02-04 21:00:41 · 84 阅读 · 0 评论 -
算法入门第二课
算法入门第二课 归并排序,堆排序,快速排序,比较块 题目一 归并排序: 1)整体就是一个简单的归并排序,左边排好,右边排好,让其整体有序。 2)让其整体有序的过程中用了排外序的方法 3)利用master公式来求解时间复杂度 4)归并排序的实质 时间复杂度O(N*logN),额外空间复杂度O(N) 左边有序,右边有序。 两个指针,比较谁小就,把谁放在一个新的数组种。 新的空间做到整个都排好序了,在赋...原创 2020-02-04 20:59:51 · 89 阅读 · 0 评论 -
算法入门第一课
算法入门第一课 题目一: 时间复杂度(粗描): 1)常数时间复杂度: 不看系数,只要高阶,不要低阶。 2)评价一个流程的好坏: 先看时间复杂度的指标,然后在分析不同数据样本的实际运行时间,也就是“常数时间项”。 在相同时间复杂度的情况下,大量数据进行比较是十分重要的。 题目二: 选择排序,冒泡排序细节的讲解与复杂度分析 额外空间复杂度(用完可以释放的空间): 时间复杂度O(n^2) 额外空间复杂...原创 2020-02-04 20:57:47 · 204 阅读 · 0 评论