摘要: 一:全排列问题 题目:输入一个字符串,打印出该字符串中字符的所有排列。 例如输入字符串abc,则输出由字符a、b、c 所能排列出来的所有字符串:abc、acb、bac、bca、cab 和cba。 1:递归算法 从集合中依次选出每一个元素,作为排列的第一个元素,然后对剩余的元... 阅读全文
posted @ 2015-06-11 16:38 gqtc 阅读(204) 评论(0) 推荐(0)
摘要: 回文指一个顺着读和反过来读都一样的字符串,比如 madam、我爱我。回文判断是一类典型的问题,尤其是与字符串结合后呈现出多姿多彩。 一、回文判断 如何判断一个字串是否是回文,最直接的方法显然是将字符串逆转,存入另外一个字符串,然后比较原字符串和逆转后的字符串是否一样,一样就是回文,这个... 阅读全文
posted @ 2015-06-11 16:04 gqtc 阅读(134) 评论(0) 推荐(0)
摘要: 问题描述:现有某网站海量日志数据,提取出某日访问该网站次数最多的那个IP。 分析:IP地址是32位的二进制数,所以共有N=2^32=4G个不同的IP地址, 如果将每个IP地址看做是数组的索引的话,那么需要创建一个unsigned count[N]的数组,即可统计出每个IP的访问次数,... 阅读全文
posted @ 2015-06-11 15:58 gqtc 阅读(419) 评论(0) 推荐(0)
摘要: 题目描述:一个文件中含有多个元素,只能遍历一遍,要求等概率随机取出其中之一。 先讲一个例子,5个人抽5个签,只有一个签意味着“中签”,轮流抽签,那么这种情况,每个人中签的概率分别是多大呢? 第一个人中签的概率是1/5, 第二个人中签的情况只能在第一个人未中时才有可能,所以... 阅读全文
posted @ 2015-06-11 15:41 gqtc 阅读(254) 评论(0) 推荐(0)
摘要: 一:胜者树(http://www.haogongju.net/art/2266943) 问题描述:给出一个长度是N的数组,现在要找出最小的两个元素,最少要多少次比较。 分析: 如果找出1个最小的,比较次数无疑是n-1;如果用选择排序,再取选择第二个最小的又得比较n-2次。... 阅读全文
posted @ 2015-06-11 15:28 gqtc 阅读(721) 评论(0) 推荐(0)
摘要: 问题描述:输入:给定一个文件,里面含有多个不重复的正整数,其中每个数都小于等于n,并且正整数的总个数小于n,n=10^7。输出:得到按从小到大升序排列的包含所有输入的整数的列表。条件:最多有大约1MB的内存空间可用,但磁盘空间足够。且要求运行时间在5分钟以下,10秒为最佳结果。 一:位图法 因... 阅读全文
posted @ 2015-06-11 14:56 gqtc 阅读(309) 评论(0) 推荐(0)
摘要: 一:求链表倒数第k个结点 题目描述:输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第0个结点为链表的尾指针(NULL)。 思路:设置两个指针p1,p2,首先p1和p2都指向head,然后p2向前走k步,这样p1和p2之间就间隔k个节点,最后p1和p2同时向前移动,直至p2走到链表... 阅读全文
posted @ 2015-06-11 11:06 gqtc 阅读(136) 评论(0) 推荐(0)
摘要: 题目描述:求500万以内的亲合数 一:亲合数概念 如果两个数a和b, a的所有真因子之和等于b,b的所有真因子之和等于a,则称a,b是一对亲和数。 例如220和284:220的真因子是:1、2、4、5、10、11、20、22、44、55、110;284的真因子是:... 阅读全文
posted @ 2015-06-11 10:54 gqtc 阅读(229) 评论(0) 推荐(0)
摘要: 第一节、寻找和为定值的两个数 题目:输入一个数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。 例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出... 阅读全文
posted @ 2015-06-11 10:26 gqtc 阅读(401) 评论(0) 推荐(0)
摘要: 1:字符串查找 给定一个字符串A,要求在A中查找一个子串B。如A="ABCDF",要你在A中查找子串B=“CD”。 初步代码如下:int strstr(char *string, char *substring) { if (string ==... 阅读全文
posted @ 2015-06-11 08:24 gqtc 阅读(209) 评论(0) 推荐(0)