绝对可以,鄙人就是acm铜牌选手,去年进的腾讯。铜牌选手应对腾讯的算法轮毫无问题。
当然,能不能过终面,那就看造化了。
但我告诫各位:除非是真的热爱,千万不要碰ACM这玩意!单纯在LintCode上刷点简单题(对于ACM选手来说,LC上的题目都算是小儿科)不香吗???
我身边的同事吧,有和我一样很早就玩ACM的,也有LC刷到炉火纯青的,甚至也有双非院校、算法水平也一般,但偏就是各种机缘巧合拿到offer的。如果只是为了拿到offer,只需要让算法到能用的水平,没必要追求ACM金银铜牌。
面试官要的人,一定是在算法能力过关/算法水平差不多的情况下,看着最顺眼的。
如果真的想靠速成的方式拿BAT这类公司的offer,可以参考我的策略。
这是针对毫无经验的刷题选手的策略。如果已经有一定刷题心得,可以跳过这步。
首先要给自己建立信心,我的策略是先把最基础的入门题刷个30道左右,熟悉coding的过程,找到刷题的感觉。
这些是我筛选过的还不错的入门题,我愿称之为——菜菜子必备的编程20题:
1.整数排序
2.反转一个3位整数
3.三数之中的最大值
4.从不充值的玩家
5.寻找素数
6.寻找最大值
7.链表节点计数
8.矩阵面积
9.打印X
10.分数超过组长的组员
11.硬币翻面
12.张三的故事
13.寻找特定的患者
14.挂科最多的同学
15.查询用户邮箱
16.增长的疫情感染人数
17.公租房信息查询
18.查找重名的同学
19.超过3名球员所得到的分数
20.推荐学理科的同学
接下来就要真正的掌握算法和数据结构知识点。
我的策略是逮着一个知识点使劲刷,刷到掌握了为止(不限题数)。
但如果刷了30题以上还是不得其法,可以先放一放,不要给自己造成心理负担。
最让人头疼的动态规划,可以循序渐进的刷这10道题:
1.栅栏染色
2.爬楼梯
3.约翰的后花园
4.单词拆分
5.书籍复印
6.解码方法
7.通配符匹配
8.旅行商问题
9.青蛙跳
10.骰子求和
双指针算法,高频算法之王,变形比较多。想掌握的话,刷这些题:
1.颜色分类
3.排颜色
4.最长子串覆盖
5.有效回文
6.带环链表
7.交错正负数
8.最接近的三数之和
9.四数之和
10.接雨水
宽度优先搜索,考察频率高,但实现不难,刷这7道题:
1.岛屿的个数
2.序列重构
3.拓扑排序
4.课程表
6.安排课程
7.最大子数组差
深度优先搜索,考察频率高,主要是考察递归会不会写。
1.子集
2.图是否是树
3.子数组之和
5.K数和
6.因式分解
分治法,考察频率中等,一般和二叉树一起出现和考察,题一般不难。
1.子集
2.数组划分
3.验证二叉查找树
4.全排列
5.克隆图
6.排颜色
7.子数组之和
哈希表,原理和应用都需要掌握,而且需要掌握代码实现。
1.两数之和
2.最长回文串
3.两数组的交集
堆,经常会用到,原理必须掌握。高频。
1.丑数
2.堆化
3.滑动窗口的中位数
4.大楼轮廓
5.超级丑数
6.食物集合
7.影际网络
贪心,考得不多,但起码要会用。
1.会议室
2.俄罗斯套娃信封
3.最大乘积
4.加油站
5.最大子数组差
链表,中小公司考得多,大公司近年来考得少。题目一般不难,主要考察Reference。
1.合并k个排序链表
3.带环链表
4.旋转链表
5.两个链表的交叉
6.K组翻转链表
线段树,不太考。但当有的题目存在多种解法的时候,线段树可以帮忙降低思考难度。
1.线段树的构造
2.线段树的查询
3.区间求和
4.区间最小数
5.我的日历
6.排序方案
7.构造队列
8.矩形面积
在准备面试前,我建议直接刷目标公司的高频题。熟悉这些公司的常考题、出题风格,会比漫无目的地乱刷效率高很多。
阿里巴巴:
字节跳动:
腾讯:
百度:
美团:
Microsoft
Amazon
领英
Apple
luei了,不更了,搬砖去了 。
等我在深圳买得起房了就取匿。