随笔分类 -  算法

摘要:算法:模式匹配KMP 模式匹配 模式匹配,这个名称比较晦涩难懂。我们举个简单的例子,在一个字符串中检测是否包含某目标串,目标串就是模式串,检测的过程就是匹配。整个查找的过程就成为模式匹配。 这是一个看似很简单的话题,我们在Java中甚至一行代码就可以实现! @Test void test(){ St 阅读全文
posted @ 2020-03-26 14:17 子烁爱学习 阅读(162) 评论(0) 推荐(0) 编辑
摘要:算法:滑动窗口 什么是滑动窗口 窗口表示数组内我们重点关注的一块范围,比如此处的范围是e~i 滑动的意思即是,这个窗口会动,如从左往右移动,比如此时右滑一位时,e就会离开,d就会加入。 阅读全文
posted @ 2019-10-25 20:07 子烁爱学习 阅读(237) 评论(0) 推荐(0) 编辑
摘要:算法:单调栈 阅读全文
posted @ 2019-10-22 22:53 子烁爱学习 阅读(226) 评论(0) 推荐(0) 编辑
摘要:算法:乐观锁与悲观锁 悲观锁 说明 悲观锁,正如其名,具有强烈的独占和排他特性。它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证 阅读全文
posted @ 2018-12-24 16:23 子烁爱学习 阅读(343) 评论(0) 推荐(0) 编辑
摘要:算法:LRU(最近最少使用) 本文参考自小灰文章:https://mp.weixin.qq.com/s/B5xiVeW22ZumbI9KfrYJSg LRU算法 什么是LRU算法 LRU算法又称最近最少使用算法,它的基本思想是长期不被使用的数据,在未来被用到的几率也不大,所以当新的数据进来时我们可以 阅读全文
posted @ 2018-12-19 15:07 子烁爱学习 阅读(4903) 评论(1) 推荐(2) 编辑
摘要:算法:拓扑排序 什么是拓扑排序 其实在写这篇博客的时候,我也是以一个学习者的角度出发的,目的就是想让自己理解和初步掌握拓扑排序。 维基百科的定义如下: 在计算机科学领域,有向图顶点的线性排序就是其拓扑排序,例如,图形的顶点可以表示要执行的任务,并且边可以表示一个任务必须在另一个任务之前执行的约束; 阅读全文
posted @ 2018-11-21 14:11 子烁爱学习 阅读(8940) 评论(2) 推荐(4) 编辑
摘要:算法:红黑树 红黑树介绍 红黑树(英语:Red–black tree)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它是在1972年由鲁道夫·贝尔发明的,他称之为"对称二叉B树",它现代的名字是在Leo J. Guibas和Robert Sedgewick于1 阅读全文
posted @ 2018-10-30 13:42 子烁爱学习 阅读(290) 评论(0) 推荐(0) 编辑
摘要:算法:并查集 快速掌握 理解算法 在计算机科学中,并查集是一种树型的数据结构,用于处理一些不交集(Disjoint Sets)的合并及查询问题。有一个联合-查找算法(union-find algorithm)定义了两个用于此数据结构的操作: Find:确定元素属于哪一个子集。这个确定方法就是不断向上 阅读全文
posted @ 2018-09-07 23:24 子烁爱学习 阅读(30587) 评论(3) 推荐(8) 编辑
摘要:数据结构:0/1背包问题 0/1背包问题 题目描述 有N件物品和一个容量为V 的背包。放入第i件物品耗费的费用是Ci1,得到 的价值是Wi 。求解将哪些物品装入背包可使价值总和最大? 基本思路 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 用子问题定义状态:即F [i, v]表 阅读全文
posted @ 2018-07-20 10:50 子烁爱学习 阅读(432) 评论(0) 推荐(0) 编辑
摘要:插眼待传送! 阅读全文
posted @ 2018-05-08 10:05 子烁爱学习 阅读(216) 评论(0) 推荐(0) 编辑
摘要:算法:信息安全相关 加密技术 对称加密技术 对称加密技术中,发送和接受数据的双方必须使用相同的密钥对明文进行加密和解密运算。 常用的对称加密算法有:DES、三重DES、RC-5算法。 非对称加密技术 非对称加密技术需要两个密钥:公开密钥和私有密钥。公开密钥和私有密钥是一对,如果公开密钥对数据进行加密 阅读全文
posted @ 2018-04-07 19:50 子烁爱学习 阅读(979) 评论(0) 推荐(0) 编辑
摘要:算法:希尔排序 快速开始 百科解释 希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名。 希尔排序是基于 阅读全文
posted @ 2018-04-07 17:51 子烁爱学习 阅读(249) 评论(0) 推荐(0) 编辑
摘要:算法:背包问题处理 0/1背包问题理解[1] 思路分享 有一个容量为 N 的背包,要用这个背包装下物品的价值最大,这些物品有两个属性:体积 w 和价值 v。 定义一个二维数组 dp 存储最大价值,其中 dp[i][j] 表示前 i 件物品体积不超过 j 的情况下能达到的最大价值。设第 i 件物品体积 阅读全文
posted @ 2018-04-02 20:47 子烁爱学习 阅读(1190) 评论(0) 推荐(0) 编辑
摘要:算法:数组处理 数组中出现次数超过一半的数字 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如,输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}由于数字2在数组中出现了五次,超过了数组长度的一半,因此输入2. 解题思路 数组中有一个数字出现的次数超过了数组长度 阅读全文
posted @ 2018-03-28 18:00 子烁爱学习 阅读(718) 评论(0) 推荐(0) 编辑
摘要:算法:字符串处理 字符串的排列 问题描述 输入一个字符串,打印出该字符串中字符的所有排列。例如,输入字符串abc,则打印出由字符a、b、c所能排列出来的所有字符串abc,acb,bac,bca,cab,cba. 解决思路 我们求整个字符串的排列,可以分成两步,第一步求所有可能出现在第一个位置的字符, 阅读全文
posted @ 2018-03-25 22:02 子烁爱学习 阅读(855) 评论(0) 推荐(0) 编辑
摘要:算法:贪婪算法基础 理解贪心算法 说明 贪心算法是使所做的选择看起来都是当前最佳的,期望通过所做的局部最优选择来产生一个全局最优解。 设计贪心算法的步骤 1.将优化问题转换成这样一个问题,即先做出选择,再解决剩下的一个子问题。 2.证明原问题总是有一个最优解是贪心选择的得到的,从而说明贪心选择的安全 阅读全文
posted @ 2018-03-24 23:08 子烁爱学习 阅读(12935) 评论(1) 推荐(0) 编辑
摘要:算法:二叉查找树进阶 LeetCode—Two Sum IV - Input is a BST 问题描述 给定一个二叉搜索树和一个目标编号,如果BST中存在两个元素,若它们的和等于给定值,则返回true。 Example 1: Java代码 解题思考 1.使用广度优先搜索和HashSet求解 Lee 阅读全文
posted @ 2018-02-13 13:56 子烁爱学习 阅读(257) 评论(0) 推荐(0) 编辑
摘要:算法:动态规划基础 搞清动态规划与分治算法 分治法 为了解决一个给定的问题,算法需要一次或多次地递归调用其自身来解决相关的子问题。这些算法通常采用分治策略:将原问题划分为n个规模较小而结构与原问题相似的子问题;递归地解决这些子问题,然后再合并其结果,就得到原问题的解。 分治算法在每一层递归上都有是三 阅读全文
posted @ 2018-01-29 20:39 子烁爱学习 阅读(374) 评论(0) 推荐(0) 编辑
摘要:算法:深度优先算法和广度优先算法(基于邻接矩阵) 1.写在前面 图的邻接矩阵表示法 图的存储结构有两种:一种是基于二维数组的邻接矩阵表示法、另一种是基于链表的的邻接表。 在邻接矩阵中,可以如下表示顶点和边连接关系: 说明: 将顶点对应为下标,根据横纵坐标将矩阵中的某一位置值设为1,表示两个顶点向联接 阅读全文
posted @ 2017-01-01 22:55 子烁爱学习 阅读(2487) 评论(0) 推荐(2) 编辑
摘要:算法:快速排序 快速排序 其实我第一次听到快速排序的时候,我就很纳闷,因为不像冒泡、插入、归并、选择排序等等,名称即原理!这个直接把特性用作名称的,我就很震惊! 咱还是直接瞅一眼百科的解释吧! 快速排序是冒泡排序的改进。 快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一 阅读全文
posted @ 2016-12-04 23:26 子烁爱学习 阅读(580) 评论(2) 推荐(0) 编辑