A.Islands这种联通块的问题一看就知道是并查集的思想。做法:从高水位到低水位依序进行操作,这样每次都有新的块浮出水面,可以在前面的基础上进行合并集合的操作。给每个位置分配一个数字,方便合并集合。同时将这些数字也排一个序,降低枚举的复杂度。合并集合时向四周查询浮出水面但是没有合并到同一集合的点进...
分类:
其他好文 时间:
2014-05-06 00:49:38
阅读次数:
568
利用二叉树实现的排序。将源文件中的数据以中序由小到大的顺序构建二叉树,再写入到另一个文件中(顺便释放为二叉树分配的空间)。这里使用了非递归的算法实现。
分类:
编程语言 时间:
2014-05-06 00:19:39
阅读次数:
353
1. 熟知主流硬件体系(x86, x64)2. 熟知 CPython
的具体实现,如若可能至少通读源码三遍以上3. 熟知每条 Python bytecode 如何被解释执行4. 熟知每条 Python 语句如何 compile 成
bytecode5. 熟知 Python 主要数据结构所采用的优化手...
分类:
其他好文 时间:
2014-05-06 00:18:16
阅读次数:
306
三、链表 链结点
在链表中,每个数据项都被包含在‘点“中,一个点是某个类的对象,这个类可认叫做LINK。因为一个链表中有许多类似的链结点,所以有必要用一个不同于链表的类来表达链结点。每个LINK对象中都包含一个对下一个点引用的字段(通常叫做next)但是本身的对象中有一个字段指向对第一个...
分类:
编程语言 时间:
2014-05-05 23:54:31
阅读次数:
561
五、哈希表
一般的线性表、树中,记录在结构中的相对位置是随机的即和记录的关键字之间不存在确定的关系,在结构中查找记录时需进行一系列和关键字的比较。这一类查找方法建立在“比较”的基础上,查找的效率与比较次数密切相关。理想的情况是能直接找到需要的记录,因此必须在记录的存储位置和它的关键字之间建立...
分类:
编程语言 时间:
2014-05-05 23:54:04
阅读次数:
491
Windows 堆溢出MS 没有完全公开 Windows 的堆管理细节,目前对 Windows
堆的了解主要基于技术狂热者、黑客、安全专家、逆向工程师等的个人研究成果。目前 Windows NT4/2000 SP4
上的堆管理策略基本(与攻击相关的数据结构和算法)研究清楚。堆溢出的重要研究者:Hal...
分类:
其他好文 时间:
2014-05-05 23:41:54
阅读次数:
646
堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数...
分类:
编程语言 时间:
2014-05-05 23:23:31
阅读次数:
499
STL的组成标准模板库STL关注的重点是泛型数据结构和算法,其关键组成部分是容器(containers)、算法(algorithms)、迭代器(iterators)、函数对象(Function
Object)、适配(Adaptor)。本文地址:http://www.cnblogs.com/archi...
分类:
其他好文 时间:
2014-05-05 23:00:10
阅读次数:
360
指针与数组指针与其它数据结构呢?比如说链表?存储空间是非连续的。不能通过对指向这种数据结构的指针做累加来遍历。能不能提供一个行为类似指针的类,来对非数组的数据结构进行遍历呢?这样我们就能够以同样的方式来遍历所有数据结构(容器)。迭代器(Iterator)是指针(pointer)的泛化,它允许程序员以...
分类:
其他好文 时间:
2014-05-05 22:54:24
阅读次数:
596
这种题一般有二种形式,共同点是都已知中序序列。如果没有中序序列,是无法唯一确定一棵树的。
已知二叉树的前序序列和中序序列,求解树。
1、确定树的根节点。树根是当前树中所有元素在前序遍历中最先出现的元素。
2、求解树的子树。找出根节点在中序遍历中的位置,根左边的所有元素就是左子树,根右边的所有元素就是右子树。若根节点左边或右边为空,则该方向子树为空;若根节点
边和右边都为空,...
分类:
其他好文 时间:
2014-05-03 16:58:36
阅读次数:
325