05 2013 档案

摘要:二叉树的深度优先遍历的非递归的通用做法是采用栈,广度优先遍历的非递归的通用做法是采用队列。深度优先遍历二叉树。1. 中序遍历(LDR)的递归算法:若二叉树为空,则算法结束;否则: 中序遍历根结点的左子树; 访问根结点; 中序遍历根结点的右子树。2. 前序遍历(DLR)的递归算法:若二叉树为空,则算法... 阅读全文
posted @ 2013-05-24 10:23 芒刺 阅读(760) 评论(0) 推荐(0)
摘要:1、糖果传递问题:老师准备了一堆糖果,恰好n个小朋友可以分到数目一样多的糖果.老师要n个小朋友去拿糖果,然后围着圆桌坐好,第1个小朋友的左边是第n个小朋友其他第i个小朋友左边是第i-1个小朋友。大家坐好后,老师发现,有些小朋友抢了很多的糖果,有的小朋友只得到了一点点糖果,甚至一颗也没有,设第ai个小朋友有ai颗糖果.小朋友们可以选择将一些糖果给他左边的或者右边的小朋友,通过”糖果传递”最后使得每个小朋友得到的糖果数是一样多的,假设一颗糖果从一个小朋友传给另一个小朋友的代价是1,问怎样传递使得所耗的总代最小。这道题完全是数学方法,设第i个小朋友分给第i-1个小朋友的糖果数为Pi(注意,Pi可正可 阅读全文
posted @ 2013-05-10 10:20 芒刺 阅读(369) 评论(0) 推荐(0)
摘要:前两天,睡觉前,偶尔翻起算法导论,看到随机函数这一块内容,里面有一个练习题.5.1-2 描述random(a,b)过程的一种实现,它只调用random(0,1).作为a和b的函数,你的程序的期望运行时间是多少?注:random(a,b)为产生a,a+1,a+2,...,b的函数发生器,且产生各整数的概率相等,同为1/(b - a + 1).看到这个题目时,似曾相识,脑海浮现了利用random(0,1)产生0或1,从而组成二进制数,来完成random(a,b)的实现.但是细想以后,感觉有个问题在脑海中有点不明不白.运行random(0,1)函数k次,使得2k>=(b-a+1),将得到[0, 阅读全文
posted @ 2013-05-07 10:38 芒刺 阅读(242) 评论(0) 推荐(0)
摘要:1.HashMap的数据结构 数组的特点是:寻址容易,插入和删除困难;而链表的特点是:寻址困难,插入和删除容易。那么我们能不能综合两者的特性,做出一种寻址容易,插入删除也容易的数据结构?答案是肯定的,这就是我们要提起的哈希表,哈希表有多种不同的实现方法,我接下来解释的是最常用的一种方法——拉链法,我们可以理解为“链表的数组”,如图: 从上图我们可以发现哈希表是由数组+链表组成的,一个长度为16的数组中,每个元素存储的是一个链表的头结点。那么这些元素是按照什么样的规则存储到数组中呢。一般情况是通过hash(key)%len获得,也就是元素的key的哈希值对数组长度取模得到。比如上述哈希表中,.. 阅读全文
posted @ 2013-05-02 19:43 芒刺 阅读(175) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/zhengzhb/article/category/926691/ 阅读全文
posted @ 2013-05-02 09:29 芒刺 阅读(110) 评论(0) 推荐(0)