
算法与数据结构
文章平均质量分 68
Jitwxs
关注 https://jitwxs.cn,看最新首发文章
展开
-
中缀表达式转后缀表达式并计算结果
测试数据要求:非负整型数,支持包含括号的四则运算import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;import java.util.Stack;public class Postfix { public static void main(String[] args) { Sca原创 2017-03-19 00:22:17 · 518 阅读 · 0 评论 -
数据结构 第六章 树和二叉树
以上我们所学习的都是Redis的单机版,我们知道Redis之所以读取速度快是因为它是存储在内存中的。内存的容量是有限的,单台Redis仍然会碰到性能瓶颈,这就需要使用Redis集群(Redis-cluster)。一、集群原理1.1 集群架构如上图所示,每一个蓝色圆圈就是一个Redis节点,这些节点组成了一个Redis集群(Redis-cluster)。节点之间使用P...原创 2017-09-23 13:43:51 · 2569 阅读 · 0 评论 -
数据结构 第五章 数组和广义表
数据结构笔记链接:第一章 绪论第二章 线性表第三章 栈和队列第四章 串第五章 数组和广义表第六章 树和二叉树第七章 图第八章 排序第九章 查找5.1 数组的定义5.2 数组的存储方式5.3 特殊矩阵5.3.1 对称矩阵5.3.2 三角矩阵5.3.3 对角矩阵(三对角矩阵为例)5.4 稀疏矩阵及存储5.4.1 概念5.4.2 三...原创 2017-04-06 21:55:57 · 2841 阅读 · 0 评论 -
数据结构 第四章 串
数据结构笔记链接:第一章 绪论第二章 线性表第三章 栈和队列第四章 串第五章 数组和广义表第六章 树和二叉树第七章 图第八章 排序第九章 查找4.1 串的基本概念4.1.1 串的概念4.1.2 串的基本运算4.2 串的存储结构4.2.1 顺序存储4.2.1.1 定长顺序串4.2.1.2 堆串4.2.2 链式存储4.3 ...原创 2017-04-06 20:55:08 · 2091 阅读 · 0 评论 -
数据结构 第三章 栈和队列
数据结构笔记链接:第一章 绪论第二章 线性表第三章 栈和队列第四章 串第五章 数组和广义表第六章 树和二叉树第七章 图第八章 排序第九章 查找3.1 栈3.1.1 栈的定义3.1.2 栈的顺序实现3.1.2.1 结构定义3.1.2.2 基本操作3.1.2.3 两栈共享技术3.1.3 栈的链式实现3.1.3.1 结构定义3.1....原创 2017-04-06 20:41:49 · 2313 阅读 · 0 评论 -
数据结构 第二章 线性表
数据结构笔记链接:第一章 绪论第二章 线性表第三章 栈和队列第四章 串第五章 数组和广义表第六章 树和二叉树第七章 图第八章 排序第九章 查找2.1 线性表的概念和运算2.1.1 线性表的概念2.1.2 线性表的特点2.1.3 线性表的计算2.2 线性表的顺序存储2.2.1 定义2.2.2 顺序存储方法2.2.3 地址计算2....原创 2017-04-06 19:58:29 · 2293 阅读 · 0 评论 -
数据结构 第一章 概论
数据结构笔记链接:第一章 绪论第二章 线性表第三章 栈和队列第四章 串第五章 数组和广义表第六章 树和二叉树第七章 图第八章 排序第九章 查找1.1 数据结构的定义和分类1.1.1 数据结构的定义1.1.2 数据结构包括的内容1.2 为什么学习数据结构1.2.1 学习数据结构的作用1.2.2 电话号码查询问题1.3 数据结构的...原创 2017-04-06 19:44:03 · 2188 阅读 · 1 评论 -
最长上升子序列(LIS)算法
理解:该子序列中后一项都比前一项大,例如有序列2 7 1 5 6 4 3 8 9,则最长上升子序列为2 5 6 8 9。具体应用:用于确定一个代价最小的调整方案,使一个序列变为升序。只需要固定LIS中的元素,调整其他元素即可。动态规划实现 O(n2)我们将序列存入数组a中,定义一个dp数组,存放最大长度。 2 7 1 5 6 4 3 8 9 我们能够得出一个规...原创 2018-03-27 16:33:55 · 728 阅读 · 0 评论 -
波兰表达式与逆波兰表达式
常见的算术表达式,称为中缀表达式,例如:5 + ( 6 – 4 / 2 ) * 3波兰表达式波兰表达式也称为前缀表达式,以上面的例子为例,其波兰表达式为:+ 5 * - 6 / 4 2 3中缀表达式转换前缀表达式的操作过程为:(1)首先设定一个操作符栈,从右到左顺序扫描整个中缀表达式:如果是操作数,则直接归入前缀表达式;如果是括号:如果是右括号,则直接将其入栈;如果...原创 2018-09-03 11:29:15 · 16403 阅读 · 9 评论 -
字符串的模式匹配(KMP)算法
一、背景给定一个主串(以 S 代替)和模式串(以 P 代替),要求找出 P 在 S 中出现的位置,此即串的模式匹配问题。Knuth-Morris-Pratt 算法(简称 KMP)是解决这一问题的常用算法之一,这个算法是由高德纳(Donald Ervin Knuth)和沃恩·普拉特在1974年构思,同年詹姆斯·H·莫里斯也独立地设计出该算法,最终三人于1977年联合发表。在继续下面的内容...原创 2018-09-10 09:40:51 · 6341 阅读 · 2 评论 -
详解布隆过滤器
一、引言假设我们想要开发一个邮件系统,那么如何实现垃圾邮件的过滤呢。最简单的办法就是把确定为是垃圾邮件的地址都保存起来,存入黑名单中。当用户接收到黑名单地址的邮件时,直接将邮件归类到垃圾箱中。垃圾邮件的地址数量可能是巨大的,因此除了被存储在数据库中,程序实际使用的时候一定是需要借助缓存的。不论是使用本地缓存还是内存缓存,当数据量达到一定数量级时,都是不太合适的。咳咳,如果你的数量级连百...原创 2019-07-01 00:45:40 · 4259 阅读 · 0 评论 -
数据结构 第七章 图
数据结构笔记链接:第一章 绪论第二章 线性表第三章 栈和队列第四章 串第五章 数组和广义表第六章 树和二叉树第七章 图第八章 排序第九章 查找7.1 图的基本概念7.1.1 概念7.1.2 有向图和无向图7.1.3 完全图、稠密图和稀疏图7.1.4 度、入度、出度和握手定理7.1.5 子图7.1.6 权和网7.1.7 路径、路径长度...原创 2017-09-24 02:55:52 · 3548 阅读 · 0 评论 -
数据结构 第八章 排序
数据结构笔记链接:第一章 绪论第二章 线性表第三章 栈和队列第四章 串第五章 数组和广义表第六章 树和二叉树第七章 图第八章 排序第九章 查找8.1 基本概念8.1 插入排序8.1.1 直接插入8.1.2 折半插入8.1.3 希尔排序8.2 交换排序8.2.1 冒泡排序8.2.2 快速排序8.3 选择排序8.3.1 简单...原创 2017-09-24 18:19:05 · 3094 阅读 · 0 评论 -
数据结构 第九章 查找
数据结构笔记链接:第一章 绪论第二章 线性表第三章 栈和队列第四章 串第五章 数组和广义表第六章 树和二叉树第七章 图第八章 排序第九章 查找9.1 基本概念9.2 基于线性表的查找9.2.1 顺序表查找法9.2.2 折半查找法9.2.3 分块查找法9.2.4 算法比较9.3 基于树表的查找9.3.1 二叉排序树9.3.1.1...原创 2017-09-24 19:20:46 · 4630 阅读 · 4 评论 -
回溯法解决迷宫问题
import java.awt.Point;import java.util.ArrayList;/*回溯法走迷宫 * 定义一个二维数组:int maze[5][5] = { 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0,};它表示一个迷宫,其中的1表示墙壁原创 2017-03-21 12:30:01 · 1004 阅读 · 0 评论 -
二分法查找JAVA实现
public class Main { public static void main(String[] args) { double[] L=new double[100]; for(int i=0;i<L.length;i++) L[i]=i+1; System.out.println(new 二分法查找().search(L, 0, L.length, 51));原创 2017-03-21 12:32:15 · 464 阅读 · 0 评论 -
计算九宫格解锁的解法和
要求: 至少经过四个点; 不能重复经过同一个点; 路径上的中间点不能跳过(如从1到3一定会经过2); 如果中间的点是之前已经用过的,那么这个点就可以被跳过(如213,因为2已经被用过,1就可以越过2与3连接,132是不允许的)。输出 九宫格的解法和(一个数字)代码public class Main { static int[][] a= new int[10][1原创 2017-04-04 20:42:37 · 1635 阅读 · 0 评论 -
JAVA广度优先实现最短路径问题
最短路径分为点到点最短路径和源点到其他点的最短路径问题,下面给出广度优先BFS算法的实现。一、点到点1.1 问题描述这里采用迷宫问题来举例。求从起点到终点的最短路径,采用广度优先的顺序,首先将与源点邻接的顶点的路径求出,然后再依次求解图中其他顶点的最短路径。 由于顶点的最短路径的求解顺序 是一个广度优先的顺序,因此需要一个辅助队列。具体步骤如下: ①从起点开始,先将其加入队列,设置距离为0;原创 2017-06-06 20:42:28 · 5927 阅读 · 0 评论 -
动态规划之01背包问题
01背包问题,是用来介绍动态规划算法最经典的例子。01背包的状态转换方程 f[i,j] = Max{ f[i-1,j-Wi]+Pi( j >= Wi ), f[i-1,j] }f[i,j]表示在前i件物品中选择若干件放在承重为 j 的背包中,可以取得的最大价值。 Pi表示第i件物品的价值。决策:为了背包中物品总价值最大化,第 i件物品应该放入背包中吗 ?题目描述:有编号分别为a,b,c,d,e的转载 2017-08-19 11:45:21 · 380 阅读 · 0 评论 -
最长公共子序列(LCS)算法
一、最长公共字串与最长公共子序列最长公共子串(Longest Common Substirng)子串是串的一个连续的部分,子串中字符的位置必须连续。例如:有两个字符串ABCBDAB 和 BDCABA,则它们的最长公共子串是:AB。最长公共子序列(Longest Common Subsequence,LCS)子序列是从串中去掉任意的元素而获得新的序列,子串中字符的位置不必...原创 2017-11-13 20:48:21 · 3167 阅读 · 0 评论 -
最短路径(Dijkstra)算法
一、算法功能:给定一个出发点(单源点)和一个有向网G=(V, E), 求出源点到其它各顶点之间的最短路径。二、算法思想:(1)把图中顶点集合分成两组,第一组为集合S,存放已求出其最短路径的顶点,第二组为尚未确定最短路径的顶点集合是V-S(令W=V-S),其中V为网中所有顶点集合。(2)按最短路径长度递增的顺序逐个把W中的顶点加到S中,直到S中包含全部顶点,而W为空。(3...原创 2017-06-06 21:23:30 · 1021 阅读 · 0 评论 -
最小生成树(Prim)算法
算法思想:假设G=<V,E>是连通图,TE是G上最小生成树中边的集合。算法从U={u0}(u0∈V),TE={ }开始,任取一个顶点u0作为开始点。重复执行下述操作:在所有u∈U, v∈V-U的边(u,v)∈E中找一条代价最小的边(u0,v0)并入集合TE,同时v0并入U,直至U=V为止。注意:选择最小边时,可能有多条同样权值的边可选,此时任选其一。代码实现:public class Pri原创 2017-11-13 21:09:14 · 384 阅读 · 0 评论 -
动态规划入门篇
动态规划相信大家都知道,动态规划算法也是新手在刚接触算法设计时很苦恼的问题,有时候觉得难以理解,但是真正理解之后,就会觉得动态规划其实并没有想象中那么难。首先,我们看一下这道题(此题目来源于北大POJ):在上面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左下或 右下走。只需要求出这个最大和即可,不必给出具体路径。 三角形的行数大于1小于等于100,转载 2017-08-19 11:42:27 · 358 阅读 · 0 评论 -
热度算法和个性化推荐
转载于:产品经理需要了解的算法——热度算法和个性化推荐今日头条的走红带动了“个性化推荐”的概念,自此之后,内容型的产品,个性化算法就逐渐从卖点变为标配。伴随着“机器学习”,“大数据”之类的热词和概念,产品的档次瞬间提高了很多。而各种推荐算法绝不仅仅是研发自己的任务,作为产品经理,必须深入到算法内部,参与算法的设计,以及结合内容对算法不断“调教”,才能让产品的推荐算法不断完善,最终与自己的内容...转载 2018-10-14 14:04:23 · 1549 阅读 · 0 评论