手撕代码面试题汇总
1. 必备技能
- 《剑指offer》66题
- leetcode medium难度,越多越好
2.面试中问到的问题
- 求n个数里面前k个最大的数(除了快排,考虑其他方法)
- 给定两个字符串a和b(长度超过100w),在字符类型上b是a的子集,求b在a字符类型上的补集;
- 给定正整数N, 返回小于等于N且至少有一位重复数字的正整数的个数;
- 电话号码组合。下图是一个手机按键的样例,每一个数字包含一些字母。比如字母“A”可以通过按一次“2”得到,字母“B”可以通过按两次“2”得到,以此类推。当给定一个数字字符串,我们也可以得到相应的映射,比如“22”, 代表字母组成的可能性是[“AA”, “B”]。要求:输入为一个数字字符串,例如”2321241499844211”。输出为可能代表的所有字母组合。
- 给定两矩形的左上角和右下角坐标,求两矩形的重叠区域面积(overlap),若不重叠,返回0。(其实就是计算IOU)。
- 清除32位整数的指定位。
- (智力题)共有36颗棋子,两个人轮流拿棋子,每次只能拿1,2,4颗棋子,拿到最后一颗的输掉。请问先拿棋子的人能否保证一定能赢(高通笔试)
- 猫抓老鼠,猫速度V,老鼠速度V/4。猫在圆周上运动,只能在圆周上运动,但可以随时改变方向。老鼠在圆心,可以在任意范围内运动,问老鼠以什么路径能逃出这个圆(高通笔试)
- 现在有包含很多个样本数据的数组,现在对这些数进行多次有放回采样,但每个数都有自己的采样概率,这个概率存在另外一个数组里面,总概率是1,问怎么实现这个采样过程。(常数时间解法)
- 一个圆形的时钟,一个点从12点出发,每秒可以顺时针走一步也可以逆时针走一步,问N秒后回到12点有多少种走法 (回溯法)
3.剑指offer或者leetcode常见题
- 二叉树前序遍历,中序遍历(递归非递归),重建二叉树
- 判断二叉树结构是否相同
- 找出一颗完全二叉树最后一个节点,时间复杂度要求 logN的平方