今天主要给大家分享一些我在整个秋招过程中总结的面试中常考的算法题。这些题目都是我看剑指Offer、LeetCode、左神算法、面试、笔试、面经时总结下来的。
一、标注说明
黑色加粗字体题目:必须掌握,熟练写出 code;
橘黄色字体题目:一般此类都是算法不容易实现,但是需要掌握思想,面试加分。
二、刷题顺序
1、了解基本的数据结构与算法的知识:
常用的数据结构:数组、链表、栈、队列、哈希表、树、图等的基本概念和实现;
常用的算法:DFS / BFS、最短路径算法(Dijkstra)、贪心算法、动态规划、蓄水池算法、Manacher 算法等;
常用的编程技巧:递归:递归非常重要,要认真理解递归的过程;
2、剑指Offer:
《剑指Offer》非常重要,可以看各大公司的面经,很多手撕代码都出自于《剑指Offer》,所以多刷几遍,每一题都务必能快速的手写出来。
3、LeetCode:
《剑指Offer》刷完了,可以先刷 LeetCode 的 Top100,当然你也可以根据自身的情况,刷自己薄弱的专题。大部分公司的笔试题都是出自于 LeetCode,原题或者改编,重要性就不用多说了。
4、左神算法班:
这个因人而异了,如果你对算法题比较敏感,这个阶段是可以跳过的。但是如果对算法不是很有信心或者准备的比较晚,还是比较推荐左神的算法班,分为初级和高级,会串讲基本的数据结构和对应的题目。
5、最后:
算法的重要性:得算法者得 Offer。大公司非常看重算法,即便内推,但是面试环节几乎都会手撕代码,如果这个环节出了问题,会大打折扣。
说明:本文一共列出了 125 道经典的面试手写算法题目,为了文章篇幅不过长,题目链接和具体代码就没有贴出,直接百度题目,肯定可以搜到。这些题目的代码详解都记录在了我的博客里:
http://blog.csdn.net/pcwl1206/article/details/
1. 数组
11-15 题都是子数组问题:在条件下,每一个位置的元素都会作为子数组的开头或者结尾元素,那么遍历完整个数组,结果一定在其中:
2. 字符串
3. 哈希表
4. 栈
5-8题是单调栈结构问题:
5. 队列
6. 链表
7. 树
1-5 是二叉树的遍历:
6-7题 是二叉树的序列化与反序列化:
8. 图
9. 数字与位运算
10. 排序的应用
11. 矩阵问题
12. 递归
13. 动态规划
14. 贪心算法
15. 回溯算法
16. 经典结构
2-4 题是滑动窗口结构:
17.经典算法
18. 剑指 Offer
《剑指Offer》中不容易分类的题目,在这里单独列出:
第36题:二叉搜索树与双向链表:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表
第41题:数据流中的中位数:两个堆实现:最大堆和最小堆
19. LeetCode
LeetCode 的 Top100 必须好好刷一刷,主要用于笔试。后续文章会给大家推荐一些 LeetCode 的刷题指南。


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/149128.html