数据结构与算法
HeinSven
发表,是对技术最好的记忆。
展开
-
字典树分析
1、基本概念字典树,也称为单词查找树,Tire树,是一种树形结构,哈希树的变种。2、基本性质(1)根结点不包含字符,除根结点外的每个子节点都含一个字符。(2)从根结点到某一结点。路径上经过的字符连接起来,就是该结点对应的字符串。(3)每个结点的所有子节点包含的字符都不相同。3、应用场景典型应用是用于统计,排序和保存大量的字符串(不仅限于字符串),经常被搜索引擎系统用...原创 2019-02-12 17:40:38 · 141 阅读 · 0 评论 -
中缀表达式转换为后缀表达式
算法思想:(1)定义队列,保存后缀表达式。(2)定义栈,暂存优先级由低到高的运算符。(3)遍历中缀表达式,若是数字或小数点,则用len计数。若遇到运算符,则使用Arrays,copyOfRange(charArr,i-len,i)截取数字,保存至队列中。若遍历到的当前元素是(,则压入栈中。(4)处理堆栈。若遍历到的当前元素是),则出栈所有元素放进队列中,直至遇到( 。若遍历到的当前...原创 2019-04-03 14:57:11 · 216 阅读 · 0 评论 -
排序
快速排序: public class QuickSort { public static void quickSort(int[] arr, int low, int high) { int i, j, temp, t; if (low > high) { return; } i = low...原创 2019-06-18 10:18:25 · 130 阅读 · 0 评论 -
深度优先和广度优先搜索
public class Search { public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; ...原创 2019-06-26 21:59:08 · 118 阅读 · 0 评论 -
Java优先队列
PriorityQueue基于优先级堆。若没有提供比较器,则使用Collection的自然顺序来排序元素。PriorityQueue的iterator()不保证,以任何特定顺序,遍历队列元素。contains() 线性时间 peek()、element()、size() 常量时间 offer()、poll()、remove() O(log(n)) off...原创 2019-07-25 11:19:45 · 334 阅读 · 1 评论 -
矩阵压缩存储
三对角矩阵:非零元素,有|i-j|≤1,其余位置均为0其中元素总数为:2+3*(n-2)+2+1=3n-2+1定义一个一维数组B[3n-2],则ai,j在B中的位置为k(注意k从0开始)则在ai,j之前的元素个数为第1行:2第2行:3第3行:3...第i-1行:3第i行:j-i+1则k=2+3*(i-2)+j-i+1=2i+j-3若已知k,则ai...原创 2019-08-27 19:46:24 · 352 阅读 · 0 评论 -
二叉树非递归遍历
public class BiTreeTraversal { static class TreeNode { int val; TreeNode left; TreeNode right; } //先序遍历 void preOrder(TreeNode root) { if (root == nu...原创 2019-08-27 21:46:01 · 206 阅读 · 2 评论