上一页 1 2 3 4 5 6 7 8 9 10 ··· 36 下一页
  2011年10月5日
摘要: try-catch-finally是这样执行的:先执行try中的语句,如果有异常,在相应的catch中执行,然后再执行finally中的语句,如果在catch中有return语句,那么,在这个return这个地方,程序先暂停一下,去执行finally 里面的东西,执行完毕了,再来执行return语句的。 阅读全文
posted @ 2011-10-05 11:05 dartagnan 阅读(231) 评论(0) 推荐(0) 编辑
  2011年9月30日
摘要: 题目:实现一个函数,对一个正整数n,算得到1需要的最少操作次数。操作规则为:如果n为偶数,将其除以2;如果n为奇数,可以加1或减1;一直处理下去。例子:func(7) = 4,可以证明最少需要4次运算n = 7n-1 6n/2 3n-1 2n/2 1要求:实现函数(实现尽可能高效) int func(unsign int n);n为输入,返回最小的运算次数。给出思路(文字描述),完成代码,并分析你算法的时间复杂度。int func(unsign int n){ if (n == 1) { return 0; } if (n%2 == 0) { return 1 + func(n/2); }.. 阅读全文
posted @ 2011-09-30 22:02 dartagnan 阅读(529) 评论(1) 推荐(0) 编辑
摘要: 题目:请实现两棵树是否相等的比较,相等返回1,否则返回其他值,并说明算法复杂度。数据结构为:typedef struct_TreeNode{char c;TreeNode *leftchild;TreeNode *rightchild;}TreeNode;函数接口为:int CompTree(TreeNode* tree1,TreeNode* tree2);注:A、B两棵树相等当且仅当Root->c==RootB-->c,而且A和B的左右子树相等或者左右互换相等。更多方法请见:http://hi.baidu.com/mianshiti/blog/item/1070b78ce2ece 阅读全文
posted @ 2011-09-30 16:48 dartagnan 阅读(1900) 评论(0) 推荐(0) 编辑
摘要: 题目:在一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。不妨假设10G个整数是64bit的。2G内存可以存放256M个64bit整数。我们可以将64bit的整数空间平均分成256M个取值范围,用2G的内存对每个取值范围内出现整数个数进行统计。这样遍历一边10G整数后,我们便知道中数在那个范围内出现,以及这个范围内总共出现了多少个整数。如果中数所在范围出现的整数比较少,我们就可以对这个范围内的整数进行排序,找到中数。如果这个范围内出现的整数比较多,我们还可以采用同样的方法将此范围再次分成多个更小的范围(256M=2^28,所以最多需要3次就可以将此范围缩小到1,也就找到 阅读全文
posted @ 2011-09-30 16:35 dartagnan 阅读(506) 评论(0) 推荐(0) 编辑
摘要: 题目:求一个论坛的在线人数,假设有一个论坛,其注册ID有两亿个,每个ID从登陆到退出会向一个日志文件中记下登陆时间和退出时间,要求写一个算法统计一天中论坛的用户在线分布,取样粒度为秒。一天总共有 3600*24 = 86400秒。定义一个长度为86400的整数数组int delta[86400],每个整数对应这一秒的人数变化值,可能为正也可能为负。开始时将数组元素都初始化为0。然后依次读入每个用户的登录时间和退出时间,将与登录时间对应的整数值加1,将与退出时间对应的整数值减1。这样处理一遍后数组中存储了每秒中的人数变化情况。定义另外一个长度为86400的整数数组int online_num[8 阅读全文
posted @ 2011-09-30 16:23 dartagnan 阅读(362) 评论(0) 推荐(0) 编辑
摘要: 题目:写一函数f(a,b),它带有两个字符串参数并返回一串字符,该字符串只包含在两个串中都有的并按照在a中的顺序。写一个版本算法复杂度O(N^2)和一个O(N) 。O(N^2):对于a中的每个字符,遍历b中的每个字符,如果相同,则拷贝到新字符串中。O(N):首先使用b中的字符建立一个hash_map,对于a中的每个字符,检测hash_map中是否存在,如果存在则拷贝到新字符串中。 阅读全文
posted @ 2011-09-30 16:14 dartagnan 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 题目:一个没有排序的链表,比如list={a,l,x,b,e,f,f,e,a,g,h,b,m},请去掉重复项,并保留原顺序,以上链表去掉重复项后为newlist={a,l,x,b,e,f,g,h,m},请写出一个高效算法(时间比空间更重要)。建立一个hash_map,key为链表中已经遍历的节点内容,开始时为空。从头开始遍历链表中的节点:- 如果节点内容已经在hash_map中存在,则删除此节点,继续向后遍历;- 如果节点内容不在hash_map中,则保留此节点,将节点内容添加到hash_map中,继续向后遍历。FROM:http://hi.baidu.com/mianshiti/blog/i 阅读全文
posted @ 2011-09-30 16:11 dartagnan 阅读(1738) 评论(0) 推荐(0) 编辑
摘要: 题目:一个大的含有50M个URL的记录,一个小的含有500个URL的记录,找出两个记录里相同的URL。第1种方法首先使用包含500个url的文件创建一个hash_set。然后遍历50M的url记录,如果url在hash_set中,则输出此url并从hash_set中删除这个url。所有输出的url就是两个记录里相同的url。第2种方法AC自动机 阅读全文
posted @ 2011-09-30 16:07 dartagnan 阅读(542) 评论(0) 推荐(0) 编辑
摘要: 1. 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?方案1:可以估计每个文件安的大小为50G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。s 遍历文件a,对每个url求取,然后根据所取得的值将url分别存储到1000个小文件(记为)中。这样每个小文件的大约为300M。s 遍历文件b,采取和a相同的方式将url分别存储到1000各小文件(记为)。这样处理后,所有可能相同的url都在对应的小文件()中,不对应的小文件不可能有相同的url。然后我们只要求出1000对小 阅读全文
posted @ 2011-09-30 11:40 dartagnan 阅读(616) 评论(1) 推荐(0) 编辑
摘要: 题目:n个空间(其中n<1M),存放a到a+n-1的数,位置随机且数字不重复,a为正且未知。现在第一个空间的数被误设置为-1。已经知道被修改的数不是最小的。请找出被修改的数字是多少。例如:n=6,a=2,原始的串为5, 3, 7, 6, 2, 4。现在被别人修改为-1, 3, 7, 6, 2, 4。现在希望找到5。第1种方法:由于修改的数不是最小的,所以遍历第二个空间到最后一个空间可以得到a的值。a 到 a+n-1这 n个数的和是 total = na + (n - 1)n/2。将第二个至最后一个空间的数累加获得 sub_total。那么被修改的数就是 total - sub_total 阅读全文
posted @ 2011-09-30 10:25 dartagnan 阅读(424) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 36 下一页