春节大礼包|刷题技巧+80道Leetcode

马上要春节了,rumor提着大礼包来给同志们拜个早年!

4b1679fefe06b708a963ad466155ec5c.png

春节之后春招和跳槽季就来了,对于没参加过信息竞赛的同学来说,算法是找工作时很大的一个坎。为了跳槽,我前两年的春节都是在刷题中度过的,目前为止刷了小四百道leetcode,也算是有一些经验,今天就跟大家分享下学习方法和我总结的干货。

如何找到感觉

讲起算法,我看过不少书,有《算法导论》、《算法第四版》、《算法竞赛入门经典》、《剑指Offer》,但都没有让我产生质变,现在回想原因可能是:

  1. 看书的时候着急,不过脑子直接看解析,也不记笔记,过几天就忘了

  2. 看完书就觉得自己会了,直接 Leetcode 随机选题,还是不会,内心受挫就不想刷了

后来发现了 Leetbook[1] 这个宝藏,才算是找到了适合自己的刷题方法。其实就一句话:

有体系,重实战。

有一个大概的知识体系后,以深度优先遍历的方法循序渐进的实战,让自己把每个知识点彻底挖透记牢。Leetbook 是 Leetcode官方提供的课程,它的好处是把算法归类为各个章节,而且大部分章节都是免费的。

ea33f36d8f1350964d68275cf88c44ab.png

如上图,在入门的时候就不要刷那种高频面试题了,先把数据结构和算法的各个基础打好。每个 book 里都是先教学、再由易到难地实战,一个知识点大概有十几道题,刷完基本上就能掌握一些套路,到medium的水平了。

然后才是去看各种面经和高频题,给自己查漏补缺,并且要稍微记录一下,几行代码或者解题思路,方便自己快速复习。下面就是我去年刷题时的笔记(文末下载):

efb58c3fb11dd546932b2e834a47068e.png

刷题时避免不了会有挫败感的,每次觉得自己很nb了,还是会在一些题上卡住。从个人感觉来看,0到100道是最难的一道坎,如果去刷 Leetbook 的话,不知不觉就够了。其次是100-300这个阶段,要靠自己的自律去支撑,突破之后对每个知识点的套路就都了解了,再往后就是看各种刁钻的思路。

如何通过算法面试

再讲到面试,是最考验心态和沟通的一个环节,不管做没做过,拿到题目之后都要走以下几步:

  1. 复述题目,和面试官确认细节

  2. 先找一些简单case,画图解决,再找一些难的case,确认自己的思路正确

  3. 通过一个例子给面试官讲解自己的思路,之后展示代码,注意强调边界条件的处理

如果刷题量够的话,看到题目应该就知道考点了,接下来就是往标准解题思路上套;如果不知道考点在哪,就和面试官沟通一下,说明自己怎么思考的、卡在了哪里,千万别直接撂挑子不做,面试官都没机会给你机会,即使他提示了做不出来也要给出想法思路,把他熬不住了主动叫停。

如果没做出来,还有一个拉好感的方法,能成功加到面试官微信的话,自己私下继续研究完把思路发给他,买卖不成态度在,下次有hc说不定就想到你这个勤学的孩子了。

干货来了

唠叨了这么多,下面就是干货环节,放上我觉得值得刷的题,后面的字母是难度,同学们可以掌握各个知识点的基础之后再来刷这些题。

  • 155. 最小栈 E

  • 85. 最大矩形 H

链表
  • 206. 反转链表 E

  • 160. 相交链表 E

  • 876. 链表的中间结点 E

  • 21. 合并两个有序链表 E, 23. 合并K个升序链表 H

  • 141. 环形链表 E, 142. 环形链表 II M

  • 19. 删除链表的倒数第 N 个结点 M

  • 287. 寻找重复数 M

  • 146. LRU 缓存机制 M

并查集
  • 200. 岛屿数量 M

  • 字节跳动大闯关

二叉树

  • 二叉树前序/中序/后序遍历

  • 112. 路径总和 E, 113. 路径总和 II M, 437. 路径总和 III M

  • 236. 二叉树的最近公共祖先 M

  • 958. 二叉树的完全性检验 M

  • 124. 二叉树中的最大路径和 H

平衡二叉树

  • 基本原理和操作

  • 为什么有了BST和AVL还需要红黑树

完全二叉树

  • 完全二叉树的插入

  • 222. 完全二叉树的节点个数 M

哈希表
  • 剑指 Offer 48. 最长不含重复字符的子字符串 M

前缀和+哈希表

  • 560. 和为K的子数组 M

  • 523. 连续的子数组和 M

查找

二分查找

  • bug-free写法:左闭右开,先写排除中位数的逻辑

  • 189. 旋转数组 M, 153. 寻找旋转排序数组中的最小值 M, 154. 寻找旋转排序数组中的最小值 II H

  • 162. 寻找峰值 M

  • 287. 寻找重复数 M

  • 4. 寻找两个正序数组的中位数 H

  • 668. 乘法表中第k小的数 H

  • 719. 找出第 k 小的距离对 H

  • 793. 阶乘函数后K个零 H

BSF

  • 抖音红人

  • 1293. 网格中的最短路径 H

  • 854. 相似度为 K 的字符串 H

DFS

  • 抖音红人

  • 200. 岛屿数量 M

  • 面试题 08.12. 八皇后 H

  • 46. 全排列 M, 47. 全排列 II M

  • 93. 复原IP地址 M

双指针

  • 1. 两数之和 E

  • 数组中两数相减的最大值

滑动窗口

  • 560. 和为K的子数组 M

  • 713. 乘积小于K的子数组 M

  • 76. 最小覆盖子串 H

排序
  • 插入:插入排序, 选择排序

  • 选择:选择排序, 堆排

  • 交换:冒泡排序, 快速排序, 快排优化

  • 归并排序, 原地归并, 剑指 Offer 51. 数组中的逆序对 H, 327. 区间和的个数 H

  • 基数排序

  • 148. 排序链表 M

  • 拓扑排序

字典序

  • 31. 下一个排列 M

  • 386. 字典序排数 M

  • 440. 字典序的第K小数字 H

  • 1163. 按字典序排在最后的子串 H

TopK问题

  • 剑指 Offer 40. 最小的k个数 E

  • 347. 前 K 个高频元素 M

  • 373. 查找和最小的K对数字 M

  • 402. 移掉K位数字 M

动态规划
  • 72. 编辑距离 H

  • 516. 最长回文子序列 M, 5. 最长回文子串 M

  • 1143. 最长公共子序列 M

  • 300. 最长递增子序列 M

  • 53. 最大子序和 E

  • 背包问题

  • 最短路径:Dijkstra, Floyd, Bellmanford, Johnson

  • 121. 买卖股票的最佳时机 E, 122. 买卖股票的最佳时机 II E, 123. 买卖股票的最佳时机 III H, 188. 买卖股票的最佳时机 IV H

模式匹配
  • 单模式单匹配:KMP

  • 多模式单匹配:Trie

  • 多模式多匹配:AC自动机

大数据
  • 蓄水池抽样法

最后,该给的我都给了,这个假期能不能量变引发质变就看大家了(拍肩!

由于微信不能插入链接,点击「阅读原文」直达知乎体验会更好~文中的脑图可以在公众号「李rumor」后台回复「算法」下载~

参考资料

[1]

leetbook: https://leetcode-cn.com/leetbook/

---

大家好我是rumor

一个热爱技术,有一点点幽默的妹子

欢迎关注我

带你学习带你肝

一起在人工智能时代旋转跳跃眨巴眼

「读懂我的暗示了咩」756bd2d0b8eaf71f6e145b83c22d8da7.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值