算法高频题库
训练营中,大家的水平都不一样,比较弱的可以选容易 + 中等滴题做,实在做不出来的就先放着,算法是一个长期的事情,不是说三天两头能搞定,一开始学起来也会难受,大家得坚持坚持哈。
目前的题,大部分以中等难题为准,如果把这些题吃下来,应付面试基本足够,至于笔试,这个还得看你自己能否灵活应用了,笔试的题,还是有些难度。
当然,只是说,你们可以把我这些题重点对待,如果时间 充足,自己也可以去刷题,因为我不可能把所有题都给你们准备好。
一开始没有题解,因为都是 LeetCode 的题,leetcode 讨论区找个点赞多的题解看就可以了,现在很多大佬在那里写题解,后面我可能会慢慢补充一些题解。
PS:大家可以优先做容易和中等的,在面试中,链表和二叉树考察频繁非常高,这两个大家好好掌握一下,然后动态规划考察也很高,如果学不懂的话,就量力而为哈,把简单的题先做了。
另外,如果你做这些题之前,对于数据结构都不大懂,建议先看下数据结构的视频:数据结构与算法, 如果对一些算法思想不大懂,建议看下咱们的算法面试视频:拿捏算法面试(系统+全面)
强调:写算法题直接在leetcode网页写,请勿在IDEA写,请勿以来IDEA的自动补全,不然你写算法题会各种bug
体验
有些人说点击之后,希望能够以新的窗口打开链接,这样当前窗口就不会丢失,如果你想要达到这样的效果,你可以自己右键->新窗口打开。
算法题库
一、链表与双指针
链表的考察超级高频,而且很多链表都可以采用双指针做,链表在面试中受欢迎一个重要的原因:就是问题的描述很简单,很容易理解,不像一些题,可能还得和候选人交流好一阵子,才能让他明白是啥。
而且链表的题,非常考察代码,有时候思路简单,但是代码特别容易出错,所以大家一定要自己手动写代码实现哈。
234. 回文链表 容易
2. 两数相加 中等
23. 合并K个排序链表 中等
92. 反转链表 II 中等 答案
142. 环形链表 II 中等 答案
143. 重排链表 中等
25. K 个一组翻转链表 困难 答案
二、二叉树
二叉树和链表类似,考察也很高,而且二叉树大部分都会「递归」相关,掌握了递归,那么二叉树会轻松很多。
94. 二叉树的中序遍历 容易 答案
101. 对称二叉树 容易 答案
104. 二叉树的最大深度 容易 答案
110. 平衡二叉树 容易 答案
144. 二叉树的前序遍历 容易 答案
102. 二叉树的层序遍历 中等 答案
145. 二叉树的后序遍历 中等 答案
199. 二叉树的右视图 中等 答案
662. 二叉树最大宽度 中等 答案
三、排序算法相关
1~4这几个排序算法,大家必须得会手写哈,这是最基础的,然后下面几道题,算法排序算法的一些使用,考察概率也挺高。
1、冒泡排序
2、快速排序
3、希尔排序
4、归并排序
5、56. 合并区间 中等
6、215. 数组中的第K个最大元素 中等 答案
7、315. 计算右侧小于当前元素的个数 困难 归并排序的应用
四、二分查找
在很多题上,二分查找更多都是一种辅助,关于二分查找,其实也有很多模版,大家只需要记住自己习惯的模版就行,比如是用 > 还是 >=,大家选定一个,然后不要变来变去。
1、69. x 的平方根 容易 答案
2、367. 有效的完全平方数 容易
4、33. 搜索旋转排序数组 中等
5、34. 在排序数组中查找元素的第一个和最后一个位置 中等
五、双指针
双指针这个词听起来很高级,但其实就是用两个变量整来整去,双指针在链表中特别好用,下面选取了一些非链表的案例,都是一些考的比较多的案例
88. 合并两个有序数组 容易
11. 盛最多水的容器 中等 答案
15. 三数之和 中等
287. 寻找重复数 中等
六、栈与队列
225. 用队列实现栈 容易 答案
232. 用栈实现队列 容易 答案
239. 滑动窗口最大值 困难 答案
七、记忆化搜索
很多记忆化搜索都可以用 DP 解决,包括下面这几篇,选这个的主要 原因是让你们知道,有记忆化搜索这个玩意。
八、动态规划
这是重点 + 难点吧,能掌握最好,实在不懂也不强求,一般字节跳动考的多一些,
2、112. 路径总和 容易 本题不属于动态规划,弄错了
3、121. 买卖股票的最佳时机 容易 答案
113. 路径总和 II 中等 答案
221. 最大正方形 中等
322. 零钱兑换 中等
518. 零钱兑换 II 中等
718. 最长重复子数组 中等 答案
1143.最长上升子序列 中等
42. 接雨水 困难
10. 正则表达式匹配 困难 答案
九、贪心
贪心这种题,其实没啥技巧,也比较容易,很多时候也不是最优解,而且很多题也很难分辨出来是否要使用贪心,大家可以把这几道题做一做,然后看一看题解。
435. 无重叠区间 中等 答案
十、回溯
大部分题,都可以采用回溯解决,并且大部分的回溯题,都是遍历所有可能性,所以时间复杂度很高,大家可以尝试用暴力回溯求出来,再看看能不能剪枝。
401. 二进制手表 简单
22. 括号生成 中等
93. 复原IP地址 中等
216. 组合总和 III 中等 答案
十一、并查集
130. 被围绕的区域 中等
200. 岛屿数量 中等
695. 岛屿的最大面积 中等
721. 账户合并 中等
十二、哈希表
1. 两数之和 容易
146. LRU缓存机制 中等 答案
460. LFU 缓存 困难
41. 缺失的第一个正数 困难
十三、其他
一些高频的题,但又不清楚怎么给他们归类好,那么就放到这一栏
9. 回文数 容易
415. 字符串相加 容易
31. 下一个排列 中等
43. 字符串相乘 中等
189. 旋转数组 中等
238. 除自身以外数组的乘积 中等(前缀和的应用)
后续
后续还会继续更新,不过这些暂时够用了,算法这些,一般是为大厂面试准备,如果你其他的还没学完,优先学习其他哈,比如项目都没时间做了,那就没必要做这些算法哈。未来社招跳槽,也是可以来刷滴。