算法与数据结构
文章平均质量分 87
程序dunk
最高级的自律是享受孤独...
展开
-
Redis缓存淘汰算法——LRU、LFU
个人博客欢迎访问总结不易,如果对你有帮助,请点赞关注支持一下微信搜索程序dunk,关注公众号,获取博客源码、数据结构与算法笔记(超级全)、大厂面试、笔试题Redis过期键的删除策略对于过期键一般的三种删除策略定时删除:在设置键的过期时间的同时,创建一个定时器(timer),让定时器在键的过期时间来临时,立即执行对键的删除操作惰性删除:放任键过期不管,但是每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除该键;如果没有过期,那就返回该键定期删除:每过一段时间,程序就对数据原创 2021-07-25 15:25:42 · 529 阅读 · 1 评论 -
携程笔试题(含答案)
个人博客欢迎访问总结不易,如果对你有帮助,请点赞关注支持一下微信搜索程序dunk,关注公众号,获取博客源码、数据结构与算法笔记、面试笔试题文章目录合成词展开(AC)方法一数组碰撞(AC)方法一合成词展开(AC)时间限制: 3000MS内存限制: 589824KB题目描述:苏克·冯·望杜是印度著名的人工智能科学家。你正在试着阅读他的文章。但望杜写文章有个习惯,就是喜欢自己造词。他会利用现有的单词拼接上英语的一些前缀和后缀来快速造出一些新词。有些新词的组合十分复杂,读上去让人头大。作为程序员原创 2021-06-12 21:47:11 · 4385 阅读 · 1 评论 -
vivo笔试题(含答案)
总结不易,如果对你有帮助,请点赞关注支持一下微信搜索程序dunk,关注公众号,定期分享Java笔试、面试题目录编译依赖问题(90% -> AC)自己的做法分析一下错误改进(AC)回文字符串(AC)游戏地图路径(AC)记忆化搜索编译依赖问题(90% -> AC)一个完整的软件项目往往会包含很多由代码和文档组成的源文件。编译器在编译整个项目的时候,可能需要按照依赖关系来依次编译每个源文件。比如,A.cpp 依赖 B.cpp,那么在编译的时候,编译器需要先编译 B.cpp,才能再编译 A..原创 2021-06-05 22:00:52 · 5578 阅读 · 3 评论 -
字节笔试题(含答案)
字节跳动2019春招研发部分编程题汇总目录万万没想到之聪明的编辑(AC)万万没想到之抓捕孔连顺(AC)雀魂启动!(AC)特征提取(AC)毕业旅行问题(TLE,50%)递归找零(AC)机器人跳跃问题(AC)万万没想到之聪明的编辑(AC)我叫王大锤,是一家出版社的编辑。我负责校对投稿来的英文稿件,这份工作非常烦人,因为每天都要去修正无数的拼写错误。但是,优秀的人总能在平凡的工作中发现真理。我发现一个发现拼写错误的捷径:\1. 三个同样的字母连在一起,一定是拼写错误,去掉一个的就好啦:比如 helll.原创 2021-05-30 00:00:36 · 6454 阅读 · 3 评论 -
理解KMP算法
数据结构与算法笔记总结不易,如果对你有帮助,请点赞关注支持一下目录KMPKMP算法介绍BF(Brute Force)KMP算法计算next数组为什么要进行next回溯[28. 实现 strStr()](https://leetcode-cn.com/problems/implement-strstr/)KMPKMP算法介绍它主要的用途就是查找字符串,查找字符串"ab"(目标字符串)在字符串"abc"(待查找字符串)中出现的位置。换句话说,就是查找字符串"abc"是否包含字符串"ab",如果包原创 2021-05-24 23:52:48 · 227 阅读 · 2 评论 -
二叉堆(彻底整明白堆排序)
前言:之前写过堆排序,因为对堆数据结构还是不够了解,懵懵逼逼的写完了堆排序,写完后,过一段时间就忘记了,究其原因,没有真正了解堆数据结构,于是…有了这篇文章插入构建public class HeapTest { public static void main(String[] args) { int[] arr = {1, 3, 2, 6, 5, 7, 8, 9, 10, 0}; Heap heap = new Heap(arr); h.原创 2021-05-21 00:07:16 · 347 阅读 · 0 评论 -
DFS&BFS
图的基本介绍前面我们学了线性表和树线性表局限于一个直接前驱和一个直接后继的关系树也只能有一个直接前驱也就是父节点当我们需要表示多对多的关系时, 这里我们就用到了图图的举例说明图是一种数据结构,其中结点可以具有零个或多个相邻元素。两个结点之间的连接称为边。 结点也可以称为顶点。如图:图的常用概念1、顶点(vertex)2、边(edge)3、路径4、无向图(右图)顶点之间的连接没有方向,比如A-B, 即可以是 A-> B 也可以 B->A . 路径:.原创 2021-01-02 13:53:59 · 118 阅读 · 1 评论 -
AVL自平衡树
因为AVL自平衡树是建立在二叉排序树的基础上的,所以这里我先简单描述一下二叉排序树和代码实现。二叉排序树(Binary Sort(Search) Tree)(BST)二叉排序树:BST: (Binary Sort(Search) Tree), 对于二叉排序树的任何一个非叶子节点,要求左子节点的值比当前节点的值小,右子节点的值比当前节点的值大。 特别说明:如果有相同的值,可以将该节点放在左子节点或右子节点比如针对前面的数据 (7, 3, 10, 12, 5, 1, 9) ,对应的二叉排序树为:原创 2020-12-29 16:33:37 · 171 阅读 · 2 评论 -
赫夫曼编码实现二进制文件压缩解压
赫夫曼树基本介绍1、给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree), 还有的书翻译为霍夫曼树。2、赫夫曼树是带权路径长度最短的树,权值较大的结点离根较近。赫夫曼树几个重要概念和举例说明1、路径和路径长度:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-12、结点的权原创 2020-12-24 15:54:20 · 4084 阅读 · 0 评论 -
堆排序
堆排序基本介绍1、堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。2、堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆, 注意 : 没有要求结点的左孩子的值和右孩子的值的大小关系。3、每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆4、大顶堆举例说明大顶堆特点:arr[i] >= arr[2*i+1] && arr[i] >原创 2020-12-20 15:38:44 · 218 阅读 · 1 评论 -
前序、中序、后序线索化二叉树
为什么要线索化二叉树先看一个问题将数列 {1, 3, 6, 8, 10, 14 } 构建成一颗二叉树. n+1=7问题分析:1、当我们对上面的二叉树进行中序遍历时,数列为 {8, 3, 10, 1, 6, 14 }2、但是 6, 8, 10, 14 这几个节点的 左右指针,并没有完全的利用上.3、如果我们希望充分的利用 各个节点的左右指针, 让各个节点可以指向自己的前后节点,怎么办?4、解决方案-线索二叉树线索化二叉树基本介绍1、n个结点的二叉链表中含有n+1 ...原创 2020-12-20 15:27:03 · 2673 阅读 · 3 评论 -
常见的排序算法,一篇就够了
排序算法介绍排序也称排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程。排序的分类:1) 内部排序:指将需要处理的所有数据都加载到内部存储器中进行排序。2) 外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。常见的排序的排序算法分类如图:冒泡排序冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前原创 2020-12-05 14:52:37 · 340 阅读 · 4 评论 -
八皇后
八皇后问题介绍八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。游戏链接八皇后问题思路分析1、第一个皇后先放第一行第一列2、第二个皇后放在第二行第一列、然后判断是否OK, 如果不OK,继续放在第二列、第三列、依次把所有列都放完,找到一个合适3、继续第三个皇后,还是第一列、第二列……直到第8个皇原创 2020-11-28 15:03:12 · 566 阅读 · 2 评论 -
逆波兰计算器
该版本只支持整数类型数进行计算本文主要是对逆波兰表达式的原理介绍和代码实现,所以对前缀、中缀、后缀表达式不做过多的赘述,下面先简单介绍一下后缀表达式后缀表达式又称逆波兰表达式,与前缀表达式相似,只是运算符位于操作数之后举例:(3+4)×5-6 对应的后缀表达式就是 3 4 + 5 × 6 –后缀表达式的计算机求值从左至右扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(次顶元素 和 栈顶元素),并将结果入栈;重复上述过程直到表达式最.原创 2020-11-23 20:00:18 · 2458 阅读 · 5 评论 -
约瑟夫问题
问题描述Josephu(约瑟夫、约瑟夫环) 问题 Josephu 问题为:设编号为1,2,… n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。举个例子n = 5 , 即有5个人k = 1, 从第一个人开始报数m = 2, 数2下经过一次出圈后第二次出圈第三次出圈第四次出圈所以最终的出..原创 2020-11-21 17:16:54 · 2789 阅读 · 11 评论