自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 收藏
  • 关注

原创 最长递增子序列LIS

本总结是是个人为防止遗忘而作,不得转载和商用。题目         给定长度为N的数组A,计算A的最长的单调递增的子序列(不一定连续)。         如:给定数组A{5,6,7,1,2,8},则A的LIS为{5,6,7,8},长度为4。方法一         使用LCS解LIS问题:                  原数组为A {5, 6, 7, 1, 2, 8}

2016-10-28 17:46:00 482

原创 贪心法和动态规划

本总结是是个人为防止遗忘而作,不得转载和商用。      如果可以通过Ai推出Ai+1,那就是贪心法。      如果不能,则必须借助Ai之前的内容,那就退化为动态规划。

2016-10-28 17:45:14 469

原创 数组的最大间隔

本总结是是个人为防止遗忘而作,不得转载和商用。基本思想         给定整数数组A[0…N-1],求这N个数排序后最大间隔。         如:1,7,14,9,4,13的最大间隔为4。因为排序后:1,4,7,9,13,14,最大间隔是13-9=4分析         显然,对原数组排序,然后求后项减前项的最大值,即为解。         但可否有更好的方法?  

2016-10-28 17:03:11 1697

原创 计数排序

本总结是是个人为防止遗忘而作,不得转载和商用。基本思想         计数排序的核心思想,是用空间换取时间,本质是建立了基于元素的Hash表。例子         数组原始数据如下:                       给定一个辅助数组,因为A的最大的数是5这里给定一个长度为6的数组C。         1,初始化C:                 

2016-10-28 16:45:15 279

原创 素和阶数

本总结是是个人为防止遗忘而作,不得转载和商用。题目         定义:一个正整数可以被拆分成两素数和的数目为“素和阶数”。请计算100万以内哪个数的素和阶数最大。方法         假设想计算20的素和阶数,那就:                   1,利用Eratosthenes筛法写出20以内的素数。                   2,利用2-sum算法计

2016-10-28 16:25:44 575

原创 迷离傍地走

本总结是是个人为防止遗忘而作,不得转载和商用。题目         为庆祝强汉文武盛世暨废除和亲七百周年,武后决定拜孙武和王翦对春夏秋冬四官细君、昭君、探春、文成做军事训练。         孙武和王翦分别负责四官的站军姿和踢正步科目。根据军训要求,只有在学会站军姿之后才能进行踢正步训练。由于四官天资差别,学习时间如下表。                  问:应该如何安排四官

2016-10-28 16:03:05 474

原创 杨氏矩阵

本总结是是个人为防止遗忘而作,不得转载和商用。题目         给定M×N的二维数组,每一行、每一列都是有序的,则该二维数组称为杨氏矩阵。                  PS:特殊的,行列都是递增排序的。         问:                   给定杨氏矩阵,如何如何增删改查。插入         假设已经杨氏矩阵             

2016-10-28 15:58:05 540

原创 逆序数问题

本总结是是个人为防止遗忘而作,不得转载和商用。题目         给定一个数组A[0…N-1],若对于某两个元素a[i]、a[j],若i<j且a[i]>a[j],则称(a[i],a[j])为逆序对。一个数组中包含的逆序对的数目称为该数组的逆序数。试设计算法,求一个数组的逆序数。         如:3,56,2,7的逆序数为3。方法         如上图所示,借助归并排

2016-10-28 15:46:35 789

原创 外排序

本总结是是个人为防止遗忘而作,不得转载和商用。定义及基本思想         外排序(Externalsorting)是指处理超过内存限度的数据的排序算法。通常将中间结果放在读写较慢的外存储器(通常是硬盘)上。         外排序常采用“排序-归并”策略。                   排序阶段,读入能放在内存中的数据量,将其排序输出到临时文件,依次进行,将待排序数据组织

2016-10-28 15:39:01 324

原创 归并排序

本总结是是个人为防止遗忘而作,不得转载和商用。基本思想         基本思想:将数组A[0…n-1]中的元素分成两个子数组:A1 [0…n/2]和A 2 [n/2+1…n-1]。分别对这两个子数组单独排序,然后将已排序的两个子数组归并成一个含有n个元素的有序数组。    归并排序是稳定的排序,即如果有两个49,则排序后前面的49还在前面,后面的49还在后面。         P

2016-10-28 15:32:33 309

原创 数独Sudoku

本总结是是个人为防止遗忘而作,不得转载和商用。题目         每行、每列、每个九宫内,都是1-9这9个数字。         如:                 思路解析         若当前位置是空格,则尝试从1到9的所有数;         如果对于1到9的某些数字,当前是合法的,则继续尝试下一个位置——调用自身即可。

2016-10-28 14:22:26 599

原创 周围区域问题

本总结是是个人为防止遗忘而作,不得转载和商用。题目         给定M×N的二维平面,格点处要么是‘X’,要么是‘O’。将完全由‘X’围成的区域中的‘O’替换成‘X’。         假定数据是4连通。         如:                  思路解析         反向思索最简单:哪些‘O’是应该保留的?         因此从上下左右

2016-10-28 14:20:12 473

原创 八皇后问题

本总结是是个人为防止遗忘而作,不得转载和商用。题目         在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种解法。                   思路解析                  上图就是该问题的一个解。         这里相当于从上到下第1行到第8行的皇后分别在第4,7,3,

2016-10-28 14:07:30 469

原创 最小生成树MST - Prim算法 和 Kriskal算法

本总结是是个人为防止遗忘而作,不得转载和商用。什么是最小生成树MST         最小生成树要求从一个带权无向完全图中选择n-1条边并使这个图仍然连通(也即得到了一棵生成树),同时还要考虑使树的权最小。         最小生成树最著名算法是Prim算法和Kruskal算法。Prim算法         它的时间复杂度:O(N2),N是点的数量。稠密图选择prim算法。

2016-10-28 11:45:02 1376

原创 最短路径(SPF - Shortest Path Firsh) - Dijkstra算法

本总结是是个人为防止遗忘而作,不得转载和商用。题目         该问题也叫“单元点最短路径问题”,即:给定一个起点到其他所有点的最短路径。         前提:                   假定已经给出了Wij,即第i个点到第j个点的边的距离的衡量(权值),Wij要么是∞(i到j不通),要么是大于0的某一个值。思路解析         对于从v0至w,且经过最

2016-10-28 11:09:43 2452

原创 计算无向连通图的割点和割边

本总结是是个人为防止遗忘而作,不得转载和商用。题目         给定某无向连通图G,若删除某节点X和已经与X相邻接的所有边时,图G变成非连通图,则节点X称为图G的割点。         如:对于下图,删除点B之后,DE和除了BDE之外的那一块就不连通了,这样这个图就成为了非连通图。                            问:给定上图的邻接矩阵或邻接表,如何计

2016-10-27 17:22:51 2050

原创 百数问题

本总结是是个人为防止遗忘而作,不得转载和商用。题目         在1,2,3,4,5,6,7,8,9(顺序不能变)数字之间插入运算符+或者运算符-或者什么都不插入,使得计算结果是100。         如:1+2+34-5+67-8+9=100         请输出所有的可行运算符方式。思路解析         假设有n个数,那就有n-1个位置可以从“+, -, 什

2016-10-27 16:46:06 397

原创 老鼠吃奶酪

本总结是是个人为防止遗忘而作,不得转载和商用。题目         一只老鼠位于迷宫左上角(0,0),迷宫中的数字9处有块大奶酪。0表示墙,1表示可通过路径。试给出一条可行的吃到奶酪的路径;若没有返回空。         假定迷宫是4连通的,即:老鼠只能上下左右走,不能斜着走。                  算法描述         这实际上就是练习深度优先搜索。

2016-10-27 15:41:12 3028

原创 判断强连通图

本总结是是个人为防止遗忘而作,不得转载和商用。什么是强连通图         对一个有向图,如果每个节点都存在到达其他任何节点的路径,那么就称它是强连通的。如何判断强连通图         任取有向图G的某结点S,从S开始进行深度优先搜索,若可以遍历G的所有结点,则将G的所有边反向,再次从S开始进行深度优先搜索,如果再次能够遍历G的所有结点,则G是强连通图,两次搜索有一次无法遍历所

2016-10-27 15:24:39 19839

原创 (并查集)求给定图G的连通分量的数目

本总结是是个人为防止遗忘而作,不得转载和商用。题目         求给定图G的连通分量的数目。         如:某国家有N个小岛组成,经过多年的基础设施积累,若干岛屿之间建立了若干桥梁。先重新完善该国的行政区划,规定只要有桥梁连接的岛屿则归属同一个城市(可以通过其他岛屿中转),问该国一共多少个城市?方法一:深度优先搜索         随便选一个点,搜完后如果有未访问的点

2016-10-27 15:23:54 3275

原创 2-3-4树、红黑树、B树

本总结是是个人为防止遗忘而作,不得转载和商用。2-3-4树                  如上图所示。         有的节点存一个值,则有2个孩子,如:                   W(比W小的为左海子,比W大的为右孩子)         有的结点存两个值,则有3个孩子,如:                   MO(比M小的为左海子,M到O之间的为中间

2016-10-27 14:52:00 2228

原创 K个不同字符的最长子串

本总结是是个人为防止遗忘而作,不得转载和商用。题目         给定字符串str,计算包括k个不同字符的最长子串的长度。         如给定字符串“eceba”和k=3,则包括3个不同字符的最长子串为“eceb”,其长度为4。算法思路         使用双索引i,j,初值赋为0;考察子串str[i,j]         为表述方便,记“子串str[i,j]中包含的

2016-10-27 11:21:37 1093

原创 前中后序遍历

本总结是是个人为防止遗忘而作,不得转载和商用。前中后遍历对比         前序遍历:根->左->右。         中序遍历:左->根->右                   二叉查找树的中序遍历就是数据的升序过程。         后序遍历:左->右->根前中后遍历举例和代码前序遍历         遍历结果:15,5,3,12,10,6,7,13,1

2016-10-26 23:10:54 765

原创 huffman编码

本总结是是个人为防止遗忘而作,不得转载和商用。介绍Huffman编码是一种无损压缩编码方案。思想         根据源字符出现的(估算)概率对字符编码,概率高的字符使用较短的编码,概率低的使用较长的编码,从而使得编码后的字符串长度期望最小。算法描述         Huffman编码是一种贪心算法:每次总选择两个最小概率的字符结点合并。         如下:  

2016-10-26 22:35:48 458

原创 二叉查找树的基本操作

本总结是是个人为防止遗忘而作,不得转载和商用。二叉查找树         二叉查找树(二叉搜索树)是满足以下条件的二叉树:                   左子树上的所有结点值均小于根结点值,                   右子树上的所有结点值均不小于根结点值,                   左右子树也满足上述两个条件查找         给定一颗二叉查

2016-10-26 18:01:38 371

原创 树和二叉树

本总结是是个人为防止遗忘而作,不得转载和商用。树和二叉树的区别         1,二叉树分左右子树不能互换位置,而树不区分。         2,树一般不让它是空的,而二叉树经常有“初始化为空”的行为。树转换成二叉树的原则         如上图所示:                  1,拿出父亲                  2,保持父亲的长子(左孩子)不

2016-10-26 18:00:34 391

原创 荷兰国旗问题(改造快速排序)

本总结是是个人为防止遗忘而作,不得转载和商用。题目         问题:现有红、白、蓝三个不同颜色的小球,乱序排列在一起,请重新排列这些小球,使得红白蓝三色的同颜色的球在一起。         PS:之所以叫荷兰国旗问题,是因为可以将红白蓝三色小球想象成条状物,有序排列后正好组成荷兰国旗,如下图:算法解析         为了解决此问题,所以问题转换为:给定数组A[0…N

2016-10-26 17:27:56 1224

原创 数字连续的子数组

本总结是是个人为防止遗忘而作,不得转载和商用。题目         给定长度为N的数组A[0…N-1],求递增且连续数字最长的子数组的长度。         如数组:1, 2, 3, 34, 56,57, 58, 59, 60, 61, 99, 121的连续数字最长的一段为56, 57, 58, 59, 60, 61,长度为6。思路         用p记录所求数组的长度,并初

2016-10-26 16:59:51 477

原创 最大连续子数组

本总结是是个人为防止遗忘而作,不得转载和商用。题目         给定一个数组A[0,…,n-1],求A的连续子数组,使得该子数组的和最大。         如:数组A:1, -2, 3,10, -4, 7, 2, -5中,子数组3, 10, -4, 7, 2的和最大。思路         将i从0遍历到n-1,假设现已经找到以第i项为结尾的最大子数组,假设它的和是Si,然后

2016-10-26 16:32:35 295

原创 零子数组

本总结是是个人为防止遗忘而作,不得转载和商用。题目         求对于长度为N的数组A,求连续子数组的和最接近0的值。         如:数组A、1, -2, 3,10, -4, 7, 2, -5中,子数组-4, 7, 2, -5的和最接近0(这里正好为0)。思路         因为“数组A第i到j项的和 = 数组前j项的和sum(j) - 数组前i项的和sum(i-1

2016-10-26 16:25:06 446

原创 查找旋转数组的最小值

本总结是是个人为防止遗忘而作,不得转载和商用。题目         假定一个排序数组以某个未知元素为支点做了旋转,如:原数组0 1 2 4 5 6 7旋转后得到4 5 6 7 0 1 2。请找出旋转后数组中最小的那个数。         假定数组中没有重复数字。思路         用left,right分别指向首尾元素,mid是left和right中间的元素。      

2016-10-26 11:49:52 353

原创 第一个缺失的整数(循环不变式)

本总结是是个人为防止遗忘而作,不得转载和商用。题目         给定一个数组A[0…N-1],找到从1开始,第一个不在数组中的正整数。         如3,5,1,2,-3,7,14,8输出4。思路-循环不变式循环不变式    如果某命题初始为真,且每次更改后仍然保持该命题为真,则若干次更改后该命题仍然为真。         

2016-10-26 11:20:45 381

原创 2-diff问题

本总结是是个人为防止遗忘而作,不得转载和商用。题目         给定已经排序的N个数以及某正数diff,找到这N个数中的两个数,使得它们的差为diff。         如:给定数组[0, 3, 7, 9,11,14, 16, 17],diff=7,则返回[0,7],[7,14],[9,16]。算法步骤         1,i=1,j=1         2,直到i或j

2016-10-26 10:19:51 371

原创 2-sum问题

本总结是是个人为防止遗忘而作,不得转载和商用。题目         给定N个不同的数以及某定值sum,找到这N个数中的两个数,使得它们的和为sum。         如给定数组[0, 3, 7, 9,11,14, 16, 17],sum=20,则返回[3,17],[9,11]。算法步骤         1,排序         2,令i=0,j=n         3,

2016-10-26 10:10:48 1256

原创 求局部最大值

本总结是是个人为防止遗忘而作,不得转载和商用。题目         给定一个无重复元素的数组A[0…N-1],求找到一个该数组的局部最大值。         规定:在数组边界外的值无穷小。思想         遍历一遍得全局最大值,它显然是局部最大值,但可否有更快的办法?         当然有。         为了解这个题,我们做一个定义。         定义

2016-10-25 22:53:01 6261

原创 绝对众数

本总结是是个人为防止遗忘而作,不得转载和商用。定义         给定N个数,称出现次数最多的数为众数;若某众数出现的次数大于N/2,称该众数为绝对众数。题目         已知给定的N个整数存在绝对众数,以最低的时空复杂度计算该绝对众数。思想         首先要明白一点:删除数组A中两个不同的数,绝对众数不变,因为:                  若两个数

2016-10-25 22:44:56 895

原创 天平与假币

本总结是是个人为防止遗忘而作,不得转载和商用。 题目         有12枚硬币,其中有且只有1枚是假币,但不知道是重还是轻。现给定一架没有砝码的天平,问至少需要多少次称量才能确保找到这枚假币?         进一步:如何证明某个方案是最少次数?思想         对于该问题,最简单的想法是把硬币分成2堆,天平左右各放6个,但这样是不会有任何用的,因为我们不知道假币的

2016-10-25 22:40:20 986

原创 字符串查找问题,求解字符串的周期(KMP算法)

本总结是是个人为防止遗忘而作,不得转载和商用。题目         给定文本串text和模式串pattern,从text中找出pattern第一次出现的位置。         记:文本串长度为N,模式串长度为M暴力求解(BF)         这个简单。                   1,i = 0, j = 0                   2,判断tes

2016-10-25 22:27:14 2015

原创 最长回文子串(Manacher算法)

本总结是是个人为防止遗忘而作,不得转载和商用。 题目         给定字符串str,若子串s是回文串,称s为str的回文子串。设计算法,计算str的最长回文子串。Manacher算法         因为回文串有奇数和偶数的不同。判断一个串是否是回文串,往往要分开编写,造成代码的拖沓。         为了解决这个问题,就采用下面的做法:

2016-10-25 15:19:43 479

原创 字符串的全排列

本总结是是个人为防止遗忘而作,不得转载和商用。 题目         给定字符串S[0…N-1],设计算法,枚举S的全排列。递归算法         以字符串1234为例:                  1,先把1提出来,对234进行全排列,只不过排列到最后还是以234“回来”,这样最后字符串还是1234,                   2,然后把1和2交换,

2016-10-25 11:28:13 1170

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除