
数据结构与算法
文章平均质量分 75
小白理解数据结构
存量美团骑手
在追求优秀的路上了
展开
-
我要打败动态规划——编辑距离
392. 判断子序列1.题目给定字符串 s 和 t ,判断 s 是否为 t 的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。进阶:如果有大量输入的 S,称作 S1, S2, … , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?示例 1:输入:s = "abc", t = "ahbgdc"输出:true原创 2022-01-29 10:13:01 · 707 阅读 · 14 评论 -
由浅入深带你手写LRU
我们常用缓存提升数据查询速度,由于缓存容量有限,当缓存容量达到上限,就需要删除部分数据挪出空间,这样新数据才可以添加进来,缓存数据不能随机删除,一般情况下我们需要根据某种算法删除缓存数据,常用的淘汰算法有LRU,LFU,FIFOLRU简介LRU是Least Recently Used的缩写,这种算法认为最近使用的数据是热门数据,下一次很大概率将会再次使用,而最近最少被使用的数据,很大概率下一次不再用到,当缓存容量满的时候,优先淘汰最近最少使用的如下图所示,队列只能够存放5个元素当调用缓存获取key原创 2022-01-28 12:14:55 · 1219 阅读 · 8 评论 -
由浅入深讲解哈夫曼树
由浅入深讲解哈夫曼树学前须知哈夫曼树相关的名词路径:在一棵树中,一个结点到另一个结点之间的通路,称为路径。下图中,从根结点到结点 a 之间的通路就是一条路径路径长度:在一条路径中,每经过一个结点,路径长度都要加 1 。例如在一棵树中,规定根结点所在层数为1层,那么从根结点到第 i 层结点的路径长度为 i - 1 。图中从根结点到结点 c 的路径长度为 3结点的权:给每一个结点赋予一个新的数值,被称为这个结点的权。例如,图中结点 a 的权为 7,结点的权为 5结点的带权路径长度:指的是从根结点到该原创 2022-01-10 11:06:30 · 803 阅读 · 24 评论 -
二叉树前中后序递归和非递归遍历和层序遍历(Java实现)
二叉树的遍历定义结点@Data // lombokpublic class Node { int value; // 权 Node leftNode; // 左孩子 Node rightNode; // 右孩子 public Node(int value) { this.value = value; } public Node(int value, Node leftNode, Node rightNode) { th原创 2021-10-10 20:02:45 · 126 阅读 · 0 评论 -
由浅入深 从堆到堆排序
本文中所有的代码全都是大根堆!实现语言是Java图片来源都是这位大神的,大神的文章也给了我很多启发 数据结构之堆堆排序 这个视频通俗易懂从什么是堆,什么是堆化,再到实现堆排序讲的很清晰,实现语言是C什么是堆1.堆的概念如果有一个关键码的集合K = {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:Ki <= K2i+1 且 Ki<=K2i+2 ,则称为小堆(或大堆)。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最.原创 2021-11-21 11:05:17 · 993 阅读 · 22 评论