摘要: 文章来源:勇幸|Thinking(http://www.ahathinking.com) 昨天和今天学习了并查集和trie树,并练习了三道入门题目,理解更为深刻,觉得有必要总结一下,这其中的内容定义之类的是取自网络,操作的说明解释及程序的注释部分为个人理解。并查集学习:并查集:(union-find sets)一种简单的用途广泛的集合. 并查集是若干个不相交集合,能够实现较快的合并和判断元素所在集合的操作,应用很多,如其求无向图的连通分量个数等。最完美的应用当属:实现Kruskar算法求最小生成树。并查集的精髓(即它的三种操作,结合实现代码模板进行理解):1、Make_Set(x) 把每一个元 阅读全文
posted @ 2013-10-09 20:05 feiling 阅读(304) 评论(0) 推荐(0) 编辑
摘要: 1.判断一个数是否是2的幂次?(number & number - 1) == 0原因:因为2的N次方换算是二进制为10……0这样的形式(0除外)。与上自己-1的位数,这们得到结果为0。例如。8的二进制为1000;8-1=7,7的二进制为111。两者相与的结果为0。1 public static boolean checkPow(int x) {2 return ((x & (x - 1)) == 0);3 }2.求一个数n的二进制中1的个数?非常巧妙地利用了一个性质,n=n&(n-1) 能移除掉n的二进制中最右边的1的性质,循环移除,直到将1全部移除,这种方法将问题的 阅读全文
posted @ 2013-10-09 16:38 feiling 阅读(382) 评论(0) 推荐(0) 编辑
摘要: 问题描述 矮人们所生活的地区有 N 棵树。有趣的是,这 N 棵树排成了一条直线。 现在,矮人们为了建造一个新的小屋,决定砍掉 K 棵树来获取木材。但是,矮人们希望对于任意两棵相邻的树,至少要保留一棵。 矮人们想知道,他们有多少种不同的砍树方案。由于方案数可能很大,你只需要输出方案数除以 10007 的余数。输入格式 输入数据的第一行有两个正整数 N 和 K。(3 ≤ K ≤ N ≤ 500)输出格式 你只需要输出一个数字,即矮人们的砍树方案的个数除以 10007 的余数。样例输入6 3样例输出4对样例的解释矮人们可以选择砍掉第 1, 3, 5 棵树,或者第 1, 3, 6 棵树,或者... 阅读全文
posted @ 2013-10-09 14:26 feiling 阅读(148) 评论(0) 推荐(0) 编辑
摘要: http://www.mitbbs.com/article_t1/JobHunting/32539885_0_2.htmlhttp://leetcode.com/2010/09/serializationdeserialization-of-binary.htmlBST 序列化到文件中:http://blog.csdn.net/sgbfblog/article/details/7774347http://leetcode.com/2010/09/saving-binary-search-tree-to-file.html 阅读全文
posted @ 2013-10-09 12:16 feiling 阅读(559) 评论(0) 推荐(0) 编辑