第一部分 基础知识 第1章 算法在计算中的作用 第2章 算法基础 第3章 函数的增长 第4章 分治策略 第5章 概率分析和随机算法 第二部分 排序和顺序统计量 第6章 堆排序 第7章 快速排序 第8章 线性时间排序 第9章 中位数和顺序统计量 第三部分 数据结构 第10章 基本数据结构 第11章 散 ...
分类:
编程语言 时间:
2017-09-27 10:07:45
阅读次数:
541
一、问题描述 在一维数组(非有序状态)中找出一个元素pivot,使得其左边的元素均小于等于它,右边的元素均大于等于它,要求线性时间复杂度的算法. 二、算法分析 首先从左往右扫描整个数组,求出非递减序列,可以用布尔数组标记。然后在从右往左扫描,记录扫描过程中的最小值rightMin,在非递减序列序列中 ...
分类:
编程语言 时间:
2017-09-24 13:40:41
阅读次数:
175
思想: 经过分析可得,若子数组和为负数就已经代表这个子数组不可能为最大子数组了,相反若子数组和为正,则将最大的和比较出来便可。 故可直接遍历该数组一旦子数组和已为负数,则置为0,否则与之前的最大值进行比较,得出目前最大值。 上代码: ...
分类:
编程语言 时间:
2017-09-20 14:21:26
阅读次数:
115
从省选开始挖的坑现在补.. 很好的参考资料.. 糖老师的blog 吉丽的blog 填坑计划 这是由杜老师引进中国oi的算法.. 用低于线性时间来算积性函数的前缀和 一般就是找另外一个积性函数卷积起来变成一个更方便计算前缀和的东西,以降低数据规模从而达到降低时间复杂度 比如说要计算$\sum_{i=1 ...
分类:
其他好文 时间:
2017-09-19 23:02:13
阅读次数:
375
给出模板串S和串T,长度分别为Slen和Tlen,在线性时间内,对于每个S[i](0<=i<Slen),求出S[i..Slen-1]与T的 最长公共前缀长度,记为extend[i],extend[i]存放s[i]开始与T的最长公共前缀长度。 例子 a a a a a a a b b b a a a ...
分类:
其他好文 时间:
2017-09-13 15:20:57
阅读次数:
263
转自http://blog.csdn.net/joylnwang/article/details/6778316/ KMP算法,是由Knuth,Morris,Pratt共同提出的模式匹配算法,其对于任何模式和目标序列,都可以在线性时间内完成匹配查找,而不会发生退化,是一个非常优秀的模式匹配算法。但是 ...
分类:
编程语言 时间:
2017-09-03 11:07:49
阅读次数:
144
算法select可以确认一个有n>1个不同元素的输入数组中第i小的元素。(如果n=1,则select只返回它的唯一输入数值作为第i小的元素。) 1.将输入数组的n个元素划分为n/5(向下取整)组,每组5个元素,则至多只有一组由剩下的n mod 5个元素组成。 2.寻找这n/5(向上取整)组中每一组的 ...
分类:
编程语言 时间:
2017-09-02 16:55:45
阅读次数:
194
1、iterator是有remove方法的,并且在使用iterator的过程中,不能自行调用collection的增删改方法 而可以利用iterator的remove方法来删除。 2、list就是一个表,ArrayList是一个单链表,LinkedList是一个双链表; 3、 4、使用Iterato ...
分类:
其他好文 时间:
2017-08-29 14:35:32
阅读次数:
148
编程内功讲什么? 算法的作用: 分治算法: 分治算法 - 最大子数组问题: 股票问题 1,暴力求解 2,分治法 树(数据结构的一种 ): 什么是树的层次? 最大层是树的深度 什么是有序树和无序树? 树的错误案例: 1,树只有一个根节点 2,子树之间是不相交的 3,一个结点不能有两个父结点 树的存储结 ...
分类:
编程语言 时间:
2017-08-24 23:56:34
阅读次数:
424
22.4-1 给出算法 TOPOLOGICAL-SORT 运行于图 22-8 上时所生成的结点次序。这里的所有假设和练习 22.3-2 一样。 ANSWER: 22.4-2 请给出一个线性时间的算法,算法的输入为一个有向无环图 G = (V, E) 以及两个结点 s 和 t,算法的输出是从结点 s ...
分类:
编程语言 时间:
2017-08-23 17:36:43
阅读次数:
1034