随笔分类 - 算法
摘要:题目描述 我叫王大锤,是一家出版社的编辑。我负责校对投稿来的英文稿件,这份工作非常烦人,因为每天都要去修正无数的拼写错误。但是,优秀的人总能在平凡的工作中发现真理。 我发现一个发现拼写错误的捷径: 1.三个同样的字母连在一起,一定是拼写错误,去掉一个的就好啦:比如 helllo -> hello 2
阅读全文
摘要:二叉搜索树作为一个经典的数据结构,具有链表的快速插入与删除的特点,同时查询效率也很优秀,所以应用十分广泛,例如在文件系统和数据库系统一般会采用这种数据结构进行高效率的排序与检索操作。同时因为实现也简单,作为一些公司算法题入门题目也是常有的事情,所以很需要被掌握哦~♥️
阅读全文
摘要:本篇文章实现了Dijkstra单源最短路径算法,同时因为使用到了小根堆,但是java提供的优先队列并未实现修改节点值的操作,因此本篇文章还实现了一个支持修改节点值的小根堆
阅读全文
摘要:拓扑排序,是一个针对有向无环图的算法,主要是为了解决前驱后继的关系,同时可以用来判断有向图是否存在环状结构
阅读全文
摘要:AC自动机是一个多模式匹配算法,在模式匹配领域被广泛应用,常见违禁词匹配。
阅读全文
摘要:Trie又称为前缀树或字典树,是一种有序树,它是一种专门用来处理串匹配的数据结构,用来解决一组字符中快速查找某个字符串的问题。Google搜索的关键字提示实现原理就是基于Tire树。
阅读全文
摘要:kmp算法是最常见的字符串匹配算法,本篇文章将通过图解的方式讲解kmp算法的工作过程,然后再实现一个简单情况下的kmp算法。
阅读全文
摘要:BM字符串匹配算法,一个性能优于著名kmp算法3~4倍的算法。
阅读全文
摘要:题目描述 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (m+n)) 。 示例 输入:nums1 = [1,3], nums2 = [2] 输出:2.00000 解释:合并数组 =
阅读全文
摘要:what:在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法 when:发现问题可以分解为同类子问题且采用同样的方式去解决 how:找到递归出口和递归体 步骤:通过分析题目是否可以分解为若干重复子问题,判断是否可以采用递归算法进行解决。确定采用递归算法之后,开始找递归出口和递归体
阅读全文