一、链表系列
1、单链表基础
2、单链表排序、反转
3、找出单链表的倒数第k个元素
4、找出单链表的中间元素
5、给定单链表,检测是否有环
6、有两个有序链表,各自内部是有序的,但是两个链表之间是无序的,合并两个链表。
7、*给定两个非环单链表(first, second),检测两个链表是否有交点,如果有返回第一个交点。
8、n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,
每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。
当一个数字删除后,从被删除数字的下一个继续删除第m个数字。
求出在这个圆圈中剩下的最后一个数字。
二、栈和队列系列
1、*栈的顺序栈、链栈实现
2、*队列的顺序表、链表实现
三、数组系列
1、*输入一个已经按升序排序过的数组和一个数字,
在数组中查找两个数,使得它们的和正好是输入的那个数字。
要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。
例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。
2、假设你有一个用1001个整数组成的数组,这些整数是任意排列的,
但是你知道所有的整数都在1到1000(包括1000)之间。
此外,除一个数字出现两次外,其他所有数字只出现一次。
假设你只能对这个数组做一次处理,用一种算法找出重复的那个数字。
如果你在运算中使用了辅助的存储方式,那么你能找到不用这种方式的算法吗
四、字符串系列
1、输入一个表示整数的字符串,把该字符串转换成整数并输出。
例如输入字符串"345",则输出整数345。
五、排序系列
1、直接插入排序
2、希尔排序
3、冒泡排序
4、快速排序
5、直接选择排序
6、堆排序
六、内存管理
1、malloc和free用法
2、realloc用法
七、常见面试题
1、如果每次可以往上爬1个或2个或3个台阶,不能往下走,从第0个台阶开始,爬到第n个台阶有多少种方案?
2、如果每次可以往上爬1个或2个或3个台阶,爬楼梯过程中允许最多往下走一次,每次走1个台阶,从第0个台阶开始,爬到第n个台阶有多少种方案?
3、如果每次可以往上爬1个或2个或3个台阶,爬楼梯过程中允许最多往下走k次,每次走1个台阶,从第0个台阶开始,爬到第n个台阶有多少种方案?
4、*C实现大整数四则运算
5、求1+2+…+n,
要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A B:C)。
八、逻辑推理系列
1、村子里有50个人,每人有一条狗,在这50条狗中有病狗(这种病不传染),于是人们要找出病狗。
2、上排给出十个数,在其下排填出对应的十个数
要求下排每个数都是先前上排那十个数在下排出现的次数。
上排的十个数如下:
[0,1,2,3,4,5,6,7,8,9]
3、有两个房间,一间房里有三盏灯,另一间房有控制着三盏灯的三个开关,
这两个房间是分割开的,从一间里不能看到另一间的情况。
现在要求受训者分别进这两房间一次,然后判断出这三盏灯分别是由哪个开关控制的。
有什么办法呢?
4、你让一些人为你工作了七天,你要用一根金条作为报酬。金条被分成七小块,每天给出一块。
如果你只能将金条切割两次,你怎样分给这些工人
5、有4张红色的牌和4张蓝色的牌,主持人先拿任意两张,再分别在A、B、C三人额头上贴任意两张牌,
A、B、C三人都可看见其余两人额头上的牌,看完后让他们猜自己额头上是什么颜色牌,
A说不知道,B说不知道,C说不知道,然后A说知道了。
请教如何推理,A是怎么知道的?
九、基础题
1、*C语言基础一
2、*C语言基础二