从ACM选手的角度讲:

为什么ACM选手在大家眼里都这么牛逼,原因就是很多ACM选手从中学就开始打比赛,你想想看,在你大学才懂一些简单的数据结构和算法的时候,这些中学生就已经ACM竞赛中畅游了。当然,也不是所有人都这样,比如我就不属于这一批,本人大一才开始准备。

除此之外,ACM的题目都很难,难到什么程度?本人在准备期间刷题刷到一度恶心。ACM竞赛很注重选手的分析和思维两方面的能力,在算法和数据结构这样已经足够复杂的题型下,还要进行大量的变形,所以没有一个高强度的培训是不可能有能力参赛。

所以,经历过ACM竞赛的非人锻炼,还坚持下来,并且还有能力拿奖的人一定都非常出色,至少在算法方面比大部分的候选人都要强。

从面试官的角度讲:

但是作为曾经腾讯的面试官,我想说的是,如果你只是为了应付面试而参加ACM,是完全没有必要的。毕竟,准备ACM比赛至少也要三两年的时间。

而算法面试,用一些简单粗暴的方式,准备3~6个月就差不多了。

首先,弄清楚面试考察的高频知识点,这里薅了一个FB大佬讲座上的资料,看过一遍总结的很不错,和我当时算法面试的考察的题型都差不多。讲座是免费的,看了不吃亏,给你们一个地址,戳这里~

最后,再跟着这些知识点总结刷题就对了。

有些人可能会质疑这样的可行性,但是想做出面试的算法题,真的就这么简单。不过一定要精刷题目,精刷到遇到同类型的题目可以直接手撕,请对自己狠一点!

下面我也根据高频考点,和自己以前做面试官出题的尿性**,整理出了一套面试考察几率非常高的算法面试考察题型,以及对应必刷的题目。**这些题目如果都掌握的游刃有余,我觉得面试就没什么大问题了。

1、排序算法 Sorting

必刷题目:

第k大元素

会议室II

有序数组的平方

最佳见面地点

摆动排序II

使用条件

复杂度

• 时间复杂度:

○ 快速排序(期望复杂度) : O(nlogn)

○ 归并排序(最坏复杂度) : O(nlogn)

• 空间复杂度:

○ 快速排序 : O(1)

○ 归并排序 : O(n)

2、动态规划 Dynamic Programming

必刷题目:

最长回文子串

解码方法

换硬币

单词拆分I

正则表达式

最大连续上升子序列

打劫房屋

完美平方

最小划分

跳跃游戏

使用条件

• 使用场景:

○ 求方案总数(90%)

○ 求最值(80%)

○ 求可行性(80%)

• 不适用的场景:

○ 找所有具体的方案(准确率99%)

○ 输入数据无序(除了背包问题外,准确率60%~70%)

○ 暴力算法已经是多项式时间复杂度(准确率80%)

• 动态规划四要素(对比递归的四要素):

○ 状态 (State) – 递归的定义

○ 方程 (Function) – 递归的拆解

○ 初始化 (Initialization) – 递归的出口

○ 答案 (Answer) – 递归的调用

• 几种常见的动态规划:

• 背包型

○ 给出 n 个物品及其大小,问是否能挑选出一些物品装满大小为m的背包

○ 题目中通常有“和”与“差”的概念,数值会被放到状态中

通常是二维的状态数组,前 i 个组成和为 j 状态数组的大小需要开 (n + 1) * (m + 1)

3、双指针算法 Two Pointers

必刷题目:

有效回文II

分割标签

飞机上看电影

装最多水的容器

对数组变换排序

字符大小写排序

在LR字符串中交换相邻字符

使用条件

7. 滑动窗口 (90%)

8. 时间复杂度要求 O(n) (80%是双指针)

9. 要求原地操作,只可以使用交换,不能使用额外空间 (80%)

10. 有子数组 subarray /子字符串 substring 的关键词 (50%)

11. 有回文 Palindrome 关键词(50%)

复杂度

• 时间复杂度:O(n)

○ 时间复杂度与最内层循环主体的执行次数有关

○ 与有多少重循环无关

• 空间复杂度:O(1)

○ 只需要分配两个指针的额外内存

4、二分法 Binary Search

必刷题目:

在排序数组中找接近的K个数

寻找旋转排序数组中的最小值

两数交集

俄罗斯套娃信封

加热器

扇形数组的顶峰坐标

有序矩阵中的第k小元素

完全平方数

使用条件

1. 排序数组 (30-40%是二分)

2. 当面试官要求你找一个比 O(n) 更小的时间复杂度算法的时候(99%)

3. 找到数组中的一个分割位置,使得左半部分满足某个条件,右半部分不满足(100%)

4. 找到一个最大/最小的值使得某个条件被满足(90%)

复杂度

5. 时间复杂度:O(logn)

6. 空间复杂度:O(1)

5、宽度优先搜索 BFS

必刷题目:

不同岛屿的个数

序列重构

迷宫II

课程表

最大子数组

墙和门

二叉树的右视图

最短路径

使用条件

12. 拓扑排序(100%)

13. 出现连通块的关键词(100%)

14. 分层遍历(100%)

15. 简单图最短路径(100%)

16. 给定一个变换规则,从初始状态变到终止状态最少几步(100%)

复杂度

• 时间复杂度:O(n + m)

○ n 是点数, m 是边数

• 空间复杂度:O(n)

6、深度优先搜索 DFS / 递归 Recursion

必刷题目:

有效的括号序列

在排序数组中找最接近的K个数

有效回文串

序列重构

斐波那契数列

解码方法

使用条件

• 找满足某个条件的所有方案 (99%)

• 二叉树 Binary Tree 的问题 (90%)

• 组合问题(95%)

○ 问题模型:求出所有满足条件的“组合”

○ 判断条件:组合中的元素是顺序无关的

• 排列问题 (95%)

○ 问题模型:求出所有满足条件的“排列”

○ 判断条件:组合中的元素是顺序“相关”的。

不要用 DFS 的场景

17. 连通块问题(一定要用 BFS,否则 StackOverflow)

18. 拓扑排序(一定要用 BFS,否则 StackOverflow)

19. 一切 BFS 可以解决的问题

复杂度

• 时间复杂度:O(方案个数 * 构造每个方案的时间)

○ 树的遍历 : O(n)

○ 排列问题 : O(n! * n)

○ 组合问题 : O(2^n * n)

7、二叉树的搜索算法 Traversal

必刷题目:

二叉树的层次遍历

二叉查找树的中后续后继

最近公共祖先

二叉树查找树中的搜索区间

使用条件

• 二叉树相关的问题 (99%)

• 可以一分为二去分别处理之后再合并结果 (100%)

• 数组相关的问题 (10%)

复杂度

时间复杂度 O(n)

空间复杂度 O(n) (含递归调用的栈空间最大耗费)

8、堆 Heap

必刷题目:

丑数 II

K个最近的点

会议室3

特定序列的第K小的数

堆化

K间隔数组排序

使用条件

20. 找最大值或者最小值(60%)

21. 找第 k 大(pop k 次 复杂度O(nlogk))(50%)

22. 要求 logn 时间对数据进行操作(40%)

堆不能解决的问题

23. 查询比某个数大的最小值/最接近的值(平衡排序二叉树 Balanced BST 才可以解决)

24. 找某段区间的最大值最小值(线段树 SegmentTree 可以解决)

25. O(n)找第k大 (使用快排中的partition操作)

————————————————

看完这个回答后,有件小事,能帮助你快速提升自己哟:

免费试听我主讲的九章算法班 2021,除了会讲如何高效刷题、掌握面试算法外,还会谈谈面试中正确沟通的技巧,培养coding style和bug free的能力。覆盖90%国内外一线大厂算法面试高频考点,帮助你1个月内搞定算法面试。首节直播分享中,将会送出算法面试精选100题,刷题100道胜过别人刷300道,有兴趣的同学可以来看看!

拿到acm铜奖可以去大厂吗?相关推荐

  1. 97.16% 的加班率,给你 3 倍工资:你愿意去大厂吗?

    作者 | luna 来源 | 猎聘(ID:liepinwang) 最近想换一份工作,看了不少职位.其中某TOP互联网大厂在我家乡设立的分部的招聘职位引起了我的关注.根据岗位描述,这是一个初级职位,也就 ...

  2. 能否去大厂的关键内功!

    最近逛知乎,看到一个很有意思的帖子.我想这可能是很多人的心声. 下面的观点也挺鲜明的:这是科班与培训班的区别. 只能说,太真实了.我上学的时候,就没学好组成原理.后来到工作中就发现,增删改查还可以,遇 ...

  3. 作为3-5年的iOS开发者:你为什么迟迟进不去大厂呢?

    本文对象是内心渴望进大厂的童鞋,希望你能咬牙看完,转折点也许就发生在今天. 这几年来,至少几十个个朋友跟我聊起这个话题,想进大厂-一门心思进大厂,但是在聊的过程中,我就可以判定: 当下及未来一段周期的 ...

  4. 计算机研究生就业方向之去大厂做人工智能

    我一直跟学生们说你考计算机的研究生之前一定要想好你想干什么,如果你只是转码,那么你不一定要考研,至少以下几个职位研究生是没有啥优势的: 1,软件测试工程师(培训一下就行) 2,前端开发工程师(本科培训 ...

  5. 那一年,我从计算机专业毕业了,要去大厂还是去小厂?

    三个我身上的小故事,让你感受下大厂和小厂有什么区别: 第一个故事: 我毕业那年,我去大厂面试,当然我也去小厂面试,从面试过程中,你很容易感受出大厂和小厂的区别.大厂面试的时候,笔试环节要考很多知识,涉 ...

  6. 自学算法的那么多人,凭什么他能去大厂和做算法带队人!

    今天要给大家推荐的是一个推荐系统领域的算法大牛:Thinkgamer.首先我们回答标题中的问题: 自学算法的那么多人,凭什么他能去大厂和做算法带队人! 他在校期间,自学了Hadoop,Spark和算法 ...

  7. 【视频】互联网寒冬,经历裁员,拿20W被迫去大厂

    [互联网寒冬]经历裁员,拿20W被迫去大厂

  8. 到底是去大厂当大头兵?还是在小厂磨炼好?

    职场生涯总会面临着选择,尤其对我们这些 IT 人来说,跳槽的频率应该是所有行业中相当大的了.那么我们跳来跳去,究竟该选择什么样的公司 ?大 or 小 . 我的思考后给出的建议是毕业的前几年,宁当&qu ...

  9. 【拖拖拖没烦恼;难难难睡不着】22届错过校招未就业|什么是校招?二本进不去大厂,校招不重要?

    哈喽大家好,我是校招VIP的大拿老师.这两天呢,我们在进行人员的招聘,其中不乏一些已经毕了业的22届学生,问他们为什么不在毕业前的秋招或者春招去找工作呢,他们普遍的回答是说学校里面没有招聘会,或是自身 ...

  10. 程序员是去大厂加班好还是在小公司天天摸鱼打卡下班好?

    在知乎看到一个问题 这种问题比较普遍,应该选择大公司还是小公司呢? 咱们先算笔账. 现在 965 一周工作40小时 大厂 995 一周工作50-55小时 工作时长多了至少25%,如果你的工资涨幅超过了 ...

最新文章

  1. LaTeX 中表格的用法总结(四)——三线表和复杂的表格
  2. Microsoft Dynamics CRM 2011 相关-摘自网络
  3. 用Cmake编译Opencv源码,生成动态库
  4. 黑马程序员--学习while、do-while、for循环、try-catch的用法
  5. webpack基础第一篇(配置文件)
  6. 从第一范式到第二范式所做的操作是_数据库设计三大范式
  7. Linux打开软盘镜像,怎样在Linux下制作软盘和光盘镜像
  8. 计算机常见知识大全,电脑基本知识
  9. vue设置右边距_数控CNC雕刻机使用系列之二: 维宏软件的参数设置
  10. 解密360黑幕:离职奇虎360老员工的告白
  11. 适合写api接口文档的管理工具有哪些?
  12. linux终端清除命令,ubuntu清除命令行记录
  13. arcmap裁剪后的tif保存_在arcgis下如何进行影像图裁剪
  14. cuda学习笔记(4)
  15. 无法识别服务器硬件信息,请教:无法获取服务器硬件信息
  16. CSS面试须知--盒子模型、浮动及定位
  17. 关于jquery.mloading加载loading效果
  18. arcgis安装后重启提示 flexnet vendor daemon 交互式服务检测
  19. 视频教程-网络营销-网站盈利方式/淘宝客网络赚钱/广告联盟-其他
  20. php中文手册 人间最美四月天,【心灵】人间最美四月天(散文)_江山文学网

热门文章

  1. springboot 神通数据库
  2. linux 图片浏览软件,FocusOn Image Viewer
  3. 活动预约报名小程序已优化点与待优化点
  4. 计算机如何共享桌面,怎么将自己的台式电脑屏幕与多人共享
  5. 万能手机解锁工具v1.0绿色加强版
  6. JavaSE,JavaEE,JavaME区别
  7. 两种方式实现序列检测:三段式状态机、移位寄存器+比较器(含testbench激励代码)
  8. java 数据字典使用_java中数据字典怎么用?图文详解
  9. GitHub 微信公众号爬虫推荐
  10. CuteEditor 6.0 在线HTML编辑器的领航者