如题所述
大公司面试的算法题目多半也是仿照行业经典题库出的,还有的也是结合自己公司业务中的实际情况,用几个特别的案例形式筛选出自己想要的人才。可以去下载一下谷歌微软的经典题库多多复习,还可以到各大公司的论坛贴吧群去看一下笔试和面试经验。
下面简单列举一些经典算法题:
1.判断一个字符串中的字符是否唯一
2.字符串翻转
3.去除字符串中重复字符
4.利用已知函数判断字符串是否为另一字符串的子串
5. 从链表中移除重复结点
6.实现一个算法从一个单链表中返回倒数第n个元素
7. 给定链表中间某结点指针,删除链表中该结点
8.求由两个链表结点组成的数之和
9. 给定一个循环链表,实现一个算法返回这个环的开始结点
10 如何只用一个数组实现三个栈
11. 实现一个栈,要求实现min函数以返回栈中的最小值
12.实现数据结构SetOfStacks来模拟叠盘子
13. 编程解决汉诺塔问题
14.使用两个栈实现一个队列
15. 写程序将一个栈按升序排序
16. 用一个函数判断一棵树是否平衡
17. 设计算法判断有向图两结点间是否存在路径
18. 将递增数组构建成一颗最小高度二叉树
19.将二叉树每一层结点构建成一个链表
20. 查找二叉查找树的任意给定结点的“下一个”结点
21.找出一棵二叉树中两个结点的第一个共同祖先结点
22. 判断一棵二叉树是否为另一棵二叉树的子树
23.输出二叉树中路径上结点值之和为给定值的所有路径
24.写程序使整数N中第i位到第j位的值与整数M中的相同
25.给定一个字符串类型表示的小数,输出其二进制表示
26. 给定一个整数x,找出另外两个二进制表示中1的个数和x相同的数
27.解释以下代码的作用:((n & (n-1)) == 0)
28. 交换一个整数二进制表示中的奇数位和偶数位
29. 写程序找出丢失的整数,要求时间复杂度O(n)
30. 为通用卡牌游戏设计数据结构,并设计子类
我们可以把每一类的题目都细细研究,触类旁通,只有掌握了基础的知识才能慢慢解决复杂问题。
1、二维数组中的查找2、替换空格
3、从尾到头打印链表
4、重建二叉树
5、用两个栈实现队列
6、旋转数组的最小数字
7、斐波那契数列
8、跳台阶
9、变态跳台阶
10、矩形覆盖
11、二进制中1的个数
12、数值的整数次方
13、调整数组顺序使奇数位于偶数前面
14、链表中倒数第k个结点
15、反转链表
16、合并两个排序的链表
17、树的子结构18、二叉树的镜像
19、顺时针打印矩阵
20、包含min函数的栈
21、栈的压入、弹出序列
22、从上往下打印二叉树
23、二叉搜索树的后序遍历序列
24、二叉树中和为某一值的路径
25、复杂链表的复制
26、二叉搜索树与双向链表
27、字符串的排列
28、数组中出现次数超过一半的数字
29、最小的K个数
30、连续子数组的最大和
31、整数中1出现的次数(从1到n整数中1出现的次数)
32、把数组排成最小的数
33、丑数
34、第一个只出现一次的字符
35、数组中的逆序对
具体例题:如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列。例如:{1, 2, 1}, {15, 78, 78, 15} , {112} 是回文序列, {1, 2, 2}, {15, 78, 87, 51} ,{112, 2, 11} 不是回文序列。现在给出一个数字序列,允许使用一种转换操作:选择任意两个相邻的数,然后从序列移除这两个数,并用这两个数字的和插入到这两个数之前的位置(只插入一个和)。现在对于所给序列要求出最少需要多少次操作可以将其变成回文序列?