01 2022 档案
摘要:前缀树,又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。 trie树常用于搜索提
阅读全文
摘要:序列化(serialization)在计算机科学的数据处理中,是指将数据结构或对象状态转换成可取用格式(例如存成文件,存于缓冲,或经由网络中发送),以留待后续在相同或另一台计算机环境中,能恢复原先状态的过程。从一系列字节提取数据结构的反向操作,是反序列化(也称为解编组、deserialization
阅读全文
摘要:左程云算法与数据结构课 https://www.bilibili.com/video/BV13g41157hK?p=2&spm_id_from=pageDriver 题目 请把一段纸条竖着放置,然后从纸条的下边向上方对折一次,压出折痕后展开,此时折痕是凹下去的。如果从纸条下边向上方连续对折两次,压出
阅读全文
摘要:public class Node<V> { public V value; public Node left; //左孩子 public Node right; //右孩子 public Node parent; //父节点 public Node(V value) { this.value =
阅读全文
摘要:左程云算法与数据结构课 https://www.bilibili.com/video/BV13g41157hK?p=2&spm_id_from=pageDriver 题目 给定两个二叉树的节点node1和node2,找到他们的最低公共祖先节点。 题解 解法一 设置一个 HashMap 保存节点与该节
阅读全文
摘要:Java 编程语言中函数传参只有值传递。 先来了解下什么是值传递,什么是引用传递: 值传递:是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。 引用传递:是指在调用函数时将实际参数的地址直接传递到函数中,这样在函数中如果对参数进行修改,将影响实际参
阅读全文
摘要:二叉搜索树(也叫二叉排序树、二叉查找树,Binary Search Tree),或是空树,或是满足以下性质的二叉树: 若左子树不空,则左子树所有节点的值均小于其根节点值 其右子树不空,则右子树所有节点的值均大于其根节点值 左右子树也分别是一颗二叉搜索树 由二叉搜索树性质,当对其进行中序遍历时,结果是
阅读全文
摘要:判断一棵二叉树不是完全二叉树可以从下面两个条件判断 若一个节点只有右孩子而无左孩子则这棵树不是完全二叉树 若出现左右子树不双全的节点,则该节点后面所有节点均为叶子节点才是完全二叉树,否则不是。 public class IsCBT { //层次遍历的思想判断是否是完全二叉树 public stati
阅读全文
摘要:树型DP即在“树”的数据结构上的动态规划 技巧 根据题目构建合适的返回类 获取左右子树的信息 加工自己的信息 下面有两个例子可以参考: 判断是否为平衡二叉树 public class IsBalancedTree { //树型DP public static boolean isBalanced(N
阅读全文
摘要:通过层次遍历的思想求 public class TreeMaxWidth { //方法一 public int getMaxWidth1(Node head) { if (head == null) { return 0; } Queue<Node> queue = new LinkedList<>
阅读全文
摘要:前序遍历 递归实现 //递归实现前序遍历 public static void PreOrderRecur(Node head) { if (head == null) { return; } System.out.println(head); PreOrderRecur(head.left); P
阅读全文
摘要:题目 给定两个可能有环也可能无环的单链表,头节点 head1 和 head2。请实现一个函数,如果两链表相交,请返回相交的第一个节点,不相交返回null。要求:如果两链表长度之和为N,时间复杂度为O(N),额外空间复杂度为O(1)。 题解 首先判断两链表有无环,如果有环则求出入环点 如果两链表均无环
阅读全文
摘要:左程云算法与数据结构课 https://www.bilibili.com/video/BV13g41157hK?p=2&spm_id_from=pageDriver 题目 一种特殊的单链表节点描述如下 class Node { int value; Node next; Node rand; Nod
阅读全文
摘要:左程云算法与数据结构课 https://www.bilibili.com/video/BV13g41157hK?p=2&spm_id_from=pageDriver 题目 给定一个单链表的头节点 head,节点的值类型是整型,再给定一个整数 piovt 。实现一个调整链表的函数,将链表调整为左部分都
阅读全文
摘要:回文是指不管是顺序读还是逆序读,读出来的都是一样效果。例如 12321 和1221 都是一个回文序列 判断一个单链表是否是回文链表可以构建一个栈,把链表结点依次入栈,然后再出栈与链表对比即可。这种方法是比较容易想到的,但额外空间复杂度是O(N)。 public static boolean isPa
阅读全文
摘要:在对链表进行操作时我们经常用到快慢指针,针对不同的场景会有不同的边界要求: 奇数长度返回中点,偶数长度返回上中点 public static Node upMid(Node head) { if (head == null) { return null; } Node slow = head; No
阅读全文
摘要:对数组 [4,1,5,0,8,3,7,5,1] 进行排序,我们可以开辟一大小为10的辅组数组空间help[10],初值均为0。扫描数组,扫描到4,help[4]+1;扫描到1,help[1]+1;扫描到5,……。最后整个help数组是[1,2,0,1,1,2,0,1,1,0]。扫描help数组,元素
阅读全文
摘要:比较器的使用 比较器的实质就是重载比较运算符 比较器可以很好地应用在特殊标准的排序上 比较器可以很好地应用在根据特殊标准排序的结构上 Comparable VS Comparator Comparable 和 Comparator 都是接口,用来对自定义的类进行比较。 区别: Comparable
阅读全文
摘要:左程云算法与数据结构课 https://www.bilibili.com/video/BV13g41157hK?p=2&spm_id_from=pageDriver 题目描述 已知一个几乎有序的数组,几乎有序是指,如果把数组排好顺序的话,每个元素移动的距离可以不超过k,并且k相对于数组来说比较小。请
阅读全文
摘要:把数组分成三部分,小于划分值、等于划分值和大于划分值三部分(荷兰国旗问题),然后在 < 区 和 > 区 在用快速排序。 这种方法每次都是固定了一批数,而不是像传统的快速排序算法一样每次都只是固定了划分值的位置。 public class QuickSort { public static void
阅读全文
摘要:左程云算法与数据结构课 https://www.bilibili.com/video/BV13g41157hK?p=2&spm_id_from=pageDriver 小和问题 在一个数组中,每个数左边比当前数小的数累加起来,叫做这个数组的小和。 例如:[1,3,4,2,5],1左边比1小的数,没有;
阅读全文
摘要:左程云算法与数据结构课 https://www.bilibili.com/video/BV13g41157hK?p=2&spm_id_from=pageDriver Master 公式是用来解决递归问题时间复杂度的公式。 Master公式仅适用于子规模相等的情况 Master 公式 T(N) = a
阅读全文
摘要:给定一个数组A[L...R],求中间值可以通过 mid = (L+R)/2,A[mid]即为中间值。 但这会出现一个问题,在极端情况下,当数组A很大时,L+R 可能会大于 int 所能表示的范围,造成结果错误。 我们可以通过以下操作求中间值从而避免 L+R 上溢。 mid = L + ((R - L
阅读全文
摘要:左程云算法与数据结构课 https://www.bilibili.com/video/BV13g41157hK?p=2&spm_id_from=pageDriver 概念 有一个想要测的方法 实现复杂度不好但是容易实现的方法b 实现一个随机样本产生器 把方法a和方法b跑相同的随机样本,看看得到的结果
阅读全文
摘要:局部最小值是指在一个数组中,假如一个元素比它的左右相邻元素(如果存在)都小,那么这个元素就是局部最小值。 题目描述 给定一个不包含相同元素的整数数组,求一个局部最小值。 题解 1)数组第一个元素比第二个元素小,即为局部最小值。 2)数组最后一个元素比它前一个元素小,即为局部最小值。 3)若不满足,那
阅读全文
摘要:题目描述 在一个有序数组中,找>=某个数最左侧的位置 题解 用二分法的思想 public class BSLeft { public int findLeft(int[] arr,int x) { //数组为空或数组长度为0,返回-1 if (arr == null || arr.length ==
阅读全文
摘要:左程云算法与数据结构课 https://www.bilibili.com/video/BV13g41157hK?p=2&spm_id_from=pageDriver 题目描述 在一个数组中, (1)有一种数出现了奇数次,其余数出现了偶数次,求出现了奇数次的那种数。 (2)有俩种数出现了奇数次,其余数
阅读全文