摘要: 二叉树中的那些常见的面试题 阅读全文
posted @ 2015-03-31 16:42 叁疯 阅读(80) 评论(0) 推荐(0) 编辑
摘要: #include #include #include //#include using namespace std;using namespace __gnu_cxx;//define the classclass ClassA{ public: Clas... 阅读全文
posted @ 2015-03-31 14:10 叁疯 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 实现一个函数,对一个正整数n,算得到1需要的最少操作次数:如果n为偶数,将其除以2;如果n为奇数,可以加1或减1;一直处理下去。例子:ret=func(7);ret=4,可以证明最少需要4次运算n=7n--6n/2 3n/2 2n++1要求:实现函数(实现尽可能高效)int func(unsign ... 阅读全文
posted @ 2015-03-31 11:05 叁疯 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 今天回顾WOJ1398,发现了这个当时没有理解透彻的算法。看了好久好久,现在终于想明白了。试着把它写下来,让自己更明白。最长递增子序列,Longest Increasing Subsequence 下面我们简记为 LIS。排序+LCS算法 以及 DP算法就忽略了,这两个太容易理解了。假设存在一个序列... 阅读全文
posted @ 2015-03-30 17:29 叁疯 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 给出一个算法,它能用O(nlgn)的最坏运行时间,确定n个元素的任何排列中逆序对的数目。(提示:修改合并排序)《算法导论》在这里直接提示修改合并排序,所以自然就是用到分治归并的思想,那么逆序对是出现在什么时候?出现多少呢?我们知道归并排序是通过分治,然后归并两个有序的序列成一个有序序列。现假设两段有... 阅读全文
posted @ 2015-03-30 15:15 叁疯 阅读(162) 评论(0) 推荐(0) 编辑
摘要: LRU主要的耗时操作就是查找,因此,我们可以使用hash_map来代替map,因此时间复杂度可以从O(logN)降低到O(1)#include #include #include #include using namespace std;class LRUCache{public: LRUCa... 阅读全文
posted @ 2015-03-30 09:47 叁疯 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 插入排序,按升序(降序将代码第17行改为while(i >= 0 && a[i] 2 #include 3 #include 4 using namespace std; 5 6 /** 7 * @desc Insertion sort 8 * 9 * @date 3/28/2015 1... 阅读全文
posted @ 2015-03-28 14:29 叁疯 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 考虑把两个n位二进制整数加起来的问题,这两个整数分别存储在两个n元数组a和b中。这两个整数的和应按二进制形式存储在一个n+1元数组c中,请给出该问题的形式化描述,并写出代码(见算法导论第三版 习题2.1-4) 1 #include 2 #include 3 #include 4 using name... 阅读全文
posted @ 2015-03-28 14:24 叁疯 阅读(352) 评论(0) 推荐(0) 编辑