一、树状数组
在解题过程中,我们有时需要维护一个数组的前缀和 S[i]=A[1]+A[2]+...+A[i] 。但是不难发现,如果我们修改了任意一个 A[i],S[i] 、 S[i+1]...S[n] 都会发生变化。可以说,每次修改 A[i] 后,调整前缀和 S[] 在最坏情况下会需要 O(n) 的时间。当 n 非常大时,程序会运行得非常缓慢。因此,这里我们引入“树状数组”,它的修改与求和都是...
分类:
编程语言 时间:
2015-07-16 22:15:40
阅读次数:
209
二叉查找树具有如下性质:
x是二叉查找树中的一个节点,如果y是x左子树中的一个节点,则y.key ≤ x.key ; 如果 y 是 x 右子树中的一个节点,则 x.key ≥ y.key.
在二叉树上执行的基本操作的时间与树的高度成正比。当这棵树是完全二叉树时,这些操作的最坏情况运行时间为Θ(lgn);如果该树是含n个节点的线性链,则这些操作的最坏情况的运行时间为...
分类:
编程语言 时间:
2015-07-16 19:57:41
阅读次数:
157
红黑树(red-black tree)是一种“平衡”查找树,它能保证最坏情况下,基本的动态集操作时间为O(lgn).
性质:
1)每个节点要么是红的,要么是黑的
2)根节点和叶子节点(NIL)是黑色的
3)若一个节点是红色的,则他的两个孩子节点是黑色的
4)对于每一个节点x,从该节点到其子酸节点的所有路径上包含相同数目的黑节点(#black nodes = black-height(x)...
分类:
编程语言 时间:
2015-07-16 19:54:30
阅读次数:
141
在 033Search in Rotated Sorted Array 稍作改进, 但是最坏情况下 复杂度为O(n)class Solution: # @param A, a list of integers # @param target, an integer to be searc...
分类:
其他好文 时间:
2015-07-08 14:21:27
阅读次数:
132
1 序在很多应用中,都要用到一种动态集合结构,它仅支持INSERT、SEARCH以及DELETE三种字典操作。例如计算机程序设计语言的编译程序需要维护一个符号表,其中元素的关键字为任意字符串,与语言中的标识符相对应。实现字典的一种有效数据结构为散列表。
散列表是普通数组的推广,因为可以对数组进行直接寻址,故可以在O(1)的时间内访问数组的任意元素。对于散列表,最坏情况下查找一个元素的时间与在链表中...
分类:
编程语言 时间:
2015-07-07 17:00:31
阅读次数:
131
序快速排序(QuickSort)也是一种排序算法,对包含n个数组的输入数组,最坏情况运行时间为O(n^2)。虽然这个最坏情况运行时间比较差,但是快速排序通常是用于排序的最佳实用选择,这是因为其平均性能相当好,期望的运行时间为O(nlgn),且O(nlgn)中隐含的常数因子很小,另外它还能够进行就地排序在虚拟环境中也能很好的工作。原理快速排序也和合并排序一样,基于分治法,分为分解、解决、合并三个步骤;...
分类:
编程语言 时间:
2015-07-01 12:12:12
阅读次数:
126
作为一种数据结构,红黑树可谓不算朴素,因为各种宣传让它过于神秘,网上搜罗了一大堆的关于红黑树的文章,不外乎千篇一律,介绍概念,分析性能,贴上代码,然后给上罪恶的一句话,它最坏情况怎么怎么地... 我们想,一棵二叉树怎么就是最坏情况,那就是它退化为一个链表,这样查找就成了遍历。问题是,平衡二叉树怎么会退回链表!它是怎么保持平衡的?能不能简单地阐述?当然可以!一般的讲述红黑树...
分类:
系统相关 时间:
2015-06-28 01:19:29
阅读次数:
201
分析:最坏情况下,在1到m间,最多只要猜log2(m)+1(取整)次,所以=>m=2^n-1。即猜n次,猜到的最大数为2^n-1.也可认为,在数1到2^n-1间,都可以在n次内猜出来。
#include
#include
using namespace std;
int main()
{
int T,n;
scanf("%d",&T);
while(T--)
{
printf("...
分类:
其他好文 时间:
2015-06-26 16:20:30
阅读次数:
130
回溯法直接搞定,注意判断素数的时候为了提高效率,直接查到小于50的素数手工打表了。。。这个方法在校赛的时候也曾经用过,当时因为超时,直接找了前2000个素数打表。。。
注意:如果最坏情况下的枚举量很大,应该使用回溯法而不是生成-测试法。...
分类:
其他好文 时间:
2015-06-25 14:09:29
阅读次数:
132
集合AddInsertRemoveItemSortFindList如果集合重置大小,就是O(1)或O(n)O(n)O(n)O(1)O(n log n),最坏情况O(n^2)StackPush(),如果栈必须重置大小,就是O(1)或O(n)n/aPop,O(1)n/an/an/aQueueEnqueu...
分类:
Web程序 时间:
2015-06-24 16:07:40
阅读次数:
178