随笔分类 - 算法
1
摘要:跳跃表能计算的条件是每层的索引节点的分布是均匀的。才能得出上一层两节点间 下一层有 K 个节点 也是为什么使用随机算法的原因了,要保证每层几乎均匀 索引节点需要的额外空间是 1 +...+ N / (K^2) + N / K。根据通项公式 1 * (1 - K ^(logk(N)) ) / ( 1
阅读全文
摘要:关于RSA的基础过程介绍 下文中的 k 代表自然数常数,不同句子,公式中不一定代表同一个数 之前接触RSA,没有过多的思考证明过程,今天有感而发,推到了一遍 假设公钥 (e, N) , 私钥 (d, N) ,那么 ed = k * g (N) + 1 , g是欧拉函数,假设 N = p * q ,p
阅读全文
摘要:动态规划:时间复杂度是O(N^2) Manacher算法,时间复杂度是O(N) 这篇文章主要是想讲怎么样能正确的填二维动态规划的二维表 动态规划比较简单: 用一个二维数组,dp[ i ][ j ] 表示 下标 i ~ j 字符串是否是回文的,false or true 边界条件是 i - j = 0
阅读全文
摘要:原题链接 程序在文末 1.分析输入数据 输入的地图的大小在 1 ~ 20,规模小,如果用dfs或bfs,并且每个点最多访问一次,则最多访问 400 个点 推测dfs和bfs访问一个点的过程中需要调用其他复杂函数,如此一来时间消耗才合理,因为单纯访问400个 点20次(leetcode的测试用例一般在
阅读全文
摘要:原题链接 题目描述: 个人分析:从输入数据看,要处理的元素个数(n)没有到达 10^9 或 10^8 级,或许可以使用暴力?但是稍微计算一下,有 10^5 * (10^5 - 1) / 2 = 10^10 / 2 个结果,说明至少运算那么多次。假设每次运算使用1ns(CPU运算速度纳秒为单位),貌似
阅读全文
摘要:写这篇博客的起因是在牛客上刷到了一道约瑟夫环相关的题。牛客链接 在牛客上跑通过了,本着追求机器效率的原则,去leetcode上找到了同样的题,再跑了一遍,发现超时。看了几篇博客并思索许久后打算写这篇博客来探究 约瑟夫环问题在选取不同数据结构和不同处理方法的时候时间复杂度的优劣。leetcode链接
阅读全文
摘要:1.如果不用最长的,则会丢失可匹配部分,也就是本来可能匹配的,结果却不能匹配。 2.因为需要保证比较位置之前的字符串都一致了,如果不用公共前后缀,则可能导致比较位置之前的字符串不一致。 理由其实很简单,因为把前缀移到后缀的位置,而比较指针不变,如果后缀(这时已经不是真正的后缀了)的结束不是贴着比较指
阅读全文
摘要:KMP看书是很难懂的......相信我,推荐一个易懂视频 https://www.bilibili.com/video/BV1jb411V78H?from=search&seid=9395428282072905815 1.为什么只用研究模式串?因为发生不匹配时,模式串当前下标之前的内容和被查找串的
阅读全文
摘要:最近遇到一个需求,需要频繁访问数据库,但是访问的内容只是 id + 名称 这样的简单键值对。 频繁的访问数据库,网络上和内存上都会给数据库服务器带来不小负担。 于是打算写一个简单的LRU缓存来缓存这样的键值对。考虑到tomcat的用户办法访问是多线程进行的。 所以还要保证cache是线程安全的。避免
阅读全文
摘要:上一章我们讲到并归排序,并归排序的重要思想是对大问题进行分解,解决分解出来的小问题达到解决大问题的效果 但是归并排序明显存在的缺点是需要一个额外的数组空间来存储临时数据 为此,我们希望找到一种算法,平均时间复杂度为 N * logN,同时空间复杂度为常数级 之前我们探讨过并归排序的时间复杂度组成 ,
阅读全文
摘要:最近读了吴伟民老师的《数据结构》,学习有感,在此记录 当我们面对规模庞大的问题的时候,往往会一头雾水不知所措 但是如果我们能把这个大问题分解成小一点的问题,再把小一点的问题分解成更小的问题 最终分解成不能再分解的原子问题(Primitive Problem) 如果我们能找到一个通用的方法适用于所有原
阅读全文
摘要:最近啃了一遍吴伟民老师的《数据结构》,记录一些心得。 一种简洁的插入排序 : 1.重要概念 : 哨兵 1.在我们要排序的数组中,哨兵做为一个辅助的位置,一般是0下标的槽位做为哨兵 2.哨兵位置上记录的数据不是有效的数据,而是临时的数据,比如上面的 ‘ -1 ’就是一个临时数据,具体的怎么个‘临时’法
阅读全文
摘要:说起进制间的转换,可能除留取余法(我自己编的名字,没找到原来叫什么名字...)是用的最普遍的了,但是我们是否想过,使用得最普遍的方法的原理到底是什么呢? 就像下面这张图的进制转换,我们知道十进制1348转八进制,只要把他一直除8直至商为0,并且把最后的余数倒过来就是我们想要的结果了。 但为什么不去怀
阅读全文
摘要:那么,求 a,b 的最大公因数就是求最大的,能均分a,b的块!
阅读全文
摘要:以下讲解内容出自《计算机组成原理(第三版)》(清华大学出版社) 大二学生一只,我的计组老师比较划水,不讲公式推导,所以最近自己研究了下Booth算法的公式推导,希望能让同样在研究Booth算法的小伙伴少花点时间。 下面将对上图公式方框中部分进行讲解。 首先要摆明一个公式。 **公式X**: - [B
阅读全文
摘要:写下此博客记录心得体会,如有不足之处请指正 先是手稿笔记 : 正文: 在Https协议中,Client端和Server端需要三个参数才能生成SessionKey来加密信息。 三个参数分别是 Client Random(客户端随机数) 假设是CServer Random(服务端随机数) 假设是SPre
阅读全文
摘要:上一篇 : 栈论 : 递归与栈式访问,如何用栈实现所有递归操作(函数调用底层篇) 2.用基础知识实现递归转栈式访问 基于以上几点,我们怎么把所有的递归都用栈这个数据结构实现呢? 想必聪明的你已经有想法了吧! 例题 : (请先自己思考尝试一下怎么实现) 先给出二叉树节点定义 : typedef str
阅读全文
1