前缀树,又称为Trie树,是一种树形数据结构,可用于高效地存储和检索字符串数据集合中的键,常用于自动补完和拼写检查等应用场景。下面对是对前缀树节点的定义:
1 | class WordNetTree { |
其中end
代表当前节点是否为结尾;words
代表每个节点中的集合,数组长度为26,代表每次创建一个WordNetTree
节点时,都会在该节点内部创建一个长度为26的WordNetTree
数组。
前缀树,又称为Trie树,是一种树形数据结构,可用于高效地存储和检索字符串数据集合中的键,常用于自动补完和拼写检查等应用场景。下面对是对前缀树节点的定义:
1 | class WordNetTree { |
其中end
代表当前节点是否为结尾;words
代表每个节点中的集合,数组长度为26,代表每次创建一个WordNetTree
节点时,都会在该节点内部创建一个长度为26的WordNetTree
数组。
这次在刷Leetcode
时,在求解数组中的第K
大问题时,想到了使用堆排序,因此本篇文章用于巩固对堆排序的学习以及代码实现。
题目描述:在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。
输入:[3,2,3,1,2,4,5,5,6] 和 k = 4
输出:4
当时看到此题时,第一反应就是想到使用大顶堆来求解,在第K
次调堆后,就能够得到最K
大元素。后续以大顶堆进行为例。
先来简单回顾堆排序:堆是一棵完全二叉树。如果是一个大顶堆,则根节点递归的大于其左右孩子节点的值。
以大顶堆为例:(3,2,3,1,2,4,5,5,6)
,对该待排序列进行堆排序。
本文用来记录对并查集的学习与总结,并通过leetcode
的两道题目来加深对其的理论与实战学习(实现代码Java
)。学习一种数据结构,最高效的方式,就是学以致用,所以这里,以leetcode
的题目为例。
给定一个由表示变量之间关系的字符串方程组成的数组,每个字符串方程 equations[i] 的长度为 4,并采用两种不同的形式之一:”a==b” 或 “a!=b”。在这里,a 和 b 是小写字母(不一定不同),表示单字母变量名。
只有当可以将整数分配给变量名,以便满足所有给定的方程时才返回 true,否则返回 false。
示例1:
输入:
["a==b","b!=a"]
输出:false
解释:如果我们指定,a = 1 且 b = 1,那么可以满足第一个方程,但无法满足第二个方程。没有办法分配变量同时满足这两个方程。示例2:
输入:
["b==a","a==b"]
输出:true
解释:我们可以指定 a = 1 且 b = 1 以满足满足这两个方程。