
算法
@Levin
https://vantaolee-bupt.gitbook.io/essay/
展开
-
Java获取图片颜色占比
import cn.hutool.core.lang.Pair;import cn.hutool.core.util.HexUtil;import lombok.extern.slf4j.Slf4j;import javax.imageio.ImageIO;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.util.HashMap;import ja.原创 2021-09-26 17:12:44 · 1053 阅读 · 0 评论 -
智能优化算法总结
原创 2019-10-30 15:04:10 · 2031 阅读 · 0 评论 -
字符串匹配算法总结
举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?暴力搜索首先,字符串"BBC ABCDAB ABCDABCDABDE"的第一个字符与搜索词"ABCDABD"的第一个字符,进行比较。因为B与A不匹配,所以搜索词后移一位。因为B与A不匹配,搜索词再往后移。就这样,直到字符串有一个字符,与搜索词的第一个字符相同为...原创 2019-07-23 15:29:02 · 734 阅读 · 0 评论 -
AC自动机
概述AC 自动机是 以 TRIE 的结构为基础 ,结合 KMP 的思想 建立的。简单来说,建立一个 AC 自动机有两个步骤:基础的 TRIE 结构:将所有的模式串构成一棵 TrieTrieTrie 。KMP 的思想:对 TrieTrieTrie 树上所有的结点构造失配指针。然后就可以利用它进行多模式匹配了。字典树构建AC 自动机在初始时会将若干个模式串丢到一个 TRIE 里,然后...原创 2019-07-23 16:51:26 · 182 阅读 · 0 评论 -
动态规划经典题目-零钱兑换
题目描述给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: -1说明:...原创 2019-05-29 11:42:14 · 1349 阅读 · 0 评论 -
数据结构与算法-图(JAVA语言描述)
图的表示对下图所示的无向图,可使用一个7X7的邻接矩阵表示:final int mw = Integer.MAX_VALUE;int[][] C = new int[][]{ {0, 5, 2, mw, mw, mw, mw}, {5, 0, mw, 1, 6, mw, mw}, {2, mw, ...原创 2019-04-25 18:40:53 · 578 阅读 · 0 评论 -
十大排序算法(JAVA语言描述)
0、算法概述0.1 算法分类十种常见排序算法可以分为两大类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。0.2 算法复杂度0.3 相关概念稳定:如果a原本在b前...原创 2019-03-30 01:40:37 · 188 阅读 · 0 评论 -
数据结构-树-LSM树
1.B+树关于B树、B+树、B树的了解参考:*http://blog.youkuaiyun.com/v_july_v/article/details/6530142优点:走进搜索引擎的作者梁斌老师针对B树、B+树给出了他的意见(为了真实性,特引用其原话,未作任何改动):“B+树还有一个最大的好处,方便扫库,B树必须用中序遍历的方法按序扫库,而B+树直接从叶子结点挨个扫一遍就完了,B+树支...转载 2019-03-22 10:22:40 · 381 阅读 · 0 评论 -
数据结构-B树
B树B-tree树即B树,B即Balanced,平衡的意思。因为B树的原英文名称为B-tree,而国内很多人喜欢把B-tree译作B-树,其实,这是个非常不好的直译,很容易让人产生误解。如人们可能会以为B-树是一种树,而B树又是另一种树。而事实上是,B-tree就是指的B树。特此说明。先介绍下二叉搜索树 1.所有非叶子结点至多拥有两个儿子(Left和Right)...原创 2019-03-22 10:13:42 · 376 阅读 · 0 评论 -
数据结构-树
1. 基本概念树( Tree )是包含n(n > 0)个结点的有穷集,其中: 每个元素称为结点( Node )。 有一个特定的结点被称为根结点或树根( Root )。 除根结点之外的其余数据元素被分为m(m ≥ 0)个互不相交的集合T1,T2,……Tm-1,其中每一个集合Ti(1<=i<=m)本身也是一棵树,被称作原树的子树。 1.1 其他定义...转载 2019-03-22 10:10:52 · 192 阅读 · 0 评论 -
数据结构-树-红黑树
1. 介绍大家都知道二叉树查找树有一个问题,就是容易偏向某一侧,这样就像一个链表结构了,失去了树结构的优点,查找时间会变坏。因此我们需要树的平衡。AVL树是一个完全平衡的二叉树,因为它规定了每个节点的左子树和右子树的高度最多差1。因此为了平衡,AVL树 在修改数据之后,会通过更多的旋转来达到完美平衡。因此 AVL树的查询效率是最高的,但是删除和插入的效率却是最低的。234树通过对二...转载 2019-03-22 10:08:06 · 193 阅读 · 0 评论 -
数据结构-树-234树
1. 介绍2-3-4树 是平衡树,但不是二叉树,因为它可以有多个节点值,也可以有多个节点。它可以实现完美平衡2-3-4树的名字是根据子节点数来确定的。2-3-4树的key的种类: 2-node: 一个key值,两个儿子节点。 3-node: 两个key值,三个儿子节点。 4-node: 三个key值,四个儿子节点。 2-3-4树的子树: 2-node...转载 2019-03-22 10:06:34 · 1199 阅读 · 0 评论 -
数据结构-树-平衡二叉树
1. 介绍AVL树又称为高度平衡的二叉搜索树。它能保持二叉树的高度平衡,尽量降低二叉树的高度,减少树的平均搜索长度。VL树性质: 左子树和右子树的高度之差的绝对值不超过1 树中的每个左子树和右子树都是AVL树 AVL树效率:一棵AVL树有N个节点,其高度可以保持在lgN,插入/删除/查找的时间复杂度也是lgN。2. 实现2.1 类定义public cl...转载 2019-03-22 10:04:22 · 268 阅读 · 0 评论 -
数据结构-树-二叉搜索树
1. 概念二叉查找树(Binary Search Tree)也称有序二叉树(Ordered Binary Tree)、排序二叉树(Sorted Binary Tree)。二叉查找树是java的 TreeSet 和 TreeMap 类实现的基础。二叉查找树相比于其他数据结构的优势在于查找、插入的时间复杂度较低。为O(log n)。2. 特点 若任意结点的左子树不空,则左子树上所...转载 2019-03-22 09:59:28 · 188 阅读 · 0 评论