春节大礼包|刷题技巧+80道Leetcode
马上要春节了,rumor提着大礼包来给同志们拜个早年!
春节之后春招和跳槽季就来了,对于没参加过信息竞赛的同学来说,算法是找工作时很大的一个坎。为了跳槽,我前两年的春节都是在刷题中度过的,目前为止刷了小四百道leetcode,也算是有一些经验,今天就跟大家分享下学习方法和我总结的干货。
如何找到感觉
讲起算法,我看过不少书,有《算法导论》、《算法第四版》、《算法竞赛入门经典》、《剑指Offer》,但都没有让我产生质变,现在回想原因可能是:
看书的时候着急,不过脑子直接看解析,也不记笔记,过几天就忘了
看完书就觉得自己会了,直接 Leetcode 随机选题,还是不会,内心受挫就不想刷了
后来发现了 Leetbook[1] 这个宝藏,才算是找到了适合自己的刷题方法。其实就一句话:
有体系,重实战。
有一个大概的知识体系后,以深度优先遍历的方法循序渐进的实战,让自己把每个知识点彻底挖透记牢。Leetbook 是 Leetcode官方提供的课程,它的好处是把算法归类为各个章节,而且大部分章节都是免费的。
如上图,在入门的时候就不要刷那种高频面试题了,先把数据结构和算法的各个基础打好。每个 book 里都是先教学、再由易到难地实战,一个知识点大概有十几道题,刷完基本上就能掌握一些套路,到medium的水平了。
然后才是去看各种面经和高频题,给自己查漏补缺,并且要稍微记录一下,几行代码或者解题思路,方便自己快速复习。下面就是我去年刷题时的笔记(文末下载):
刷题时避免不了会有挫败感的,每次觉得自己很nb了,还是会在一些题上卡住。从个人感觉来看,0到100道是最难的一道坎,如果去刷 Leetbook 的话,不知不觉就够了。其次是100-300这个阶段,要靠自己的自律去支撑,突破之后对每个知识点的套路就都了解了,再往后就是看各种刁钻的思路。
如何通过算法面试
再讲到面试,是最考验心态和沟通的一个环节,不管做没做过,拿到题目之后都要走以下几步:
复述题目,和面试官确认细节
先找一些简单case,画图解决,再找一些难的case,确认自己的思路正确
通过一个例子给面试官讲解自己的思路,之后展示代码,注意强调边界条件的处理
如果刷题量够的话,看到题目应该就知道考点了,接下来就是往标准解题思路上套;如果不知道考点在哪,就和面试官沟通一下,说明自己怎么思考的、卡在了哪里,千万别直接撂挑子不做,面试官都没机会给你机会,即使他提示了做不出来也要给出想法思路,把他熬不住了主动叫停。
如果没做出来,还有一个拉好感的方法,能成功加到面试官微信的话,自己私下继续研究完把思路发给他,买卖不成态度在,下次有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
一个热爱技术,有一点点幽默的妹子
欢迎关注我
带你学习带你肝
一起在人工智能时代旋转跳跃眨巴眼
「读懂我的暗示了咩」
春节大礼包|刷题技巧+80道Leetcode相关推荐
- LeetCode:数组刷题(17道经典题目)
LeetCode 数组刷题(17道经典题目) 本文带来的是以数组为主题的经典题目,主要实现是C++,部分题目也用Python实现了. 704. 二分查找 35.搜索插入位置 34. 在排序数组中查找元 ...
- 数据结构与算法书籍、视频、项目、网站、刷题技巧推荐(2021 年持续更新)...
今天整理出一些算法相关学习资源,包括书籍.算法刷题网站.项目资源.视频课程.面试要领这5个方面. 首先介绍一下技术书阅读方法论. 一.速读一遍(最好在1~2天内完成) 人的大脑记忆力有限,在一天内快速 ...
- 数据结构与算法书籍、视频、项目、网站、刷题技巧推荐(2021 年持续更新)......
今天整理出一些算法相关学习资源,包括书籍.算法刷题网站.项目资源.视频课程.面试要领这5个方面. 首先介绍一下技术书阅读方法论. 一.速读一遍(最好在1~2天内完成) 人的大脑记忆力有限,在一天内快速 ...
- leetcode刷题技巧
给大家分享一个我刷500道力扣的经验: 1.一道题定时刷,比如超过半小时做不出来就看答案: 2.不要用轮子,比如很多题用python的包一句话就能解决,这时候尝试自己写: 3.关注时间与空间复杂度,尽 ...
- 2020年9月PAT甲级满分必备刷题技巧
2020年7月的考试结束了,除了本次的考题更新,短期内不会更新. [7月题目的特点:首次线上考试,没出链表.树相关的模板题,第2到4题背景新颖,大大降低了抄袭历年代码的可能性,可以看作是线上考试的新趋 ...
- 2021.5.21开始的兔系刷题之路 根据LeetCode分类进行逐个击破 培养出自己的套路~
十二月了 再更一波 最近的题解都写在这个仓库中,另外仓库中也记录了自己学习前端过程中的收获~ 近期刷题情况-- 2021-11突然好多人看这篇XD 来更一波,依旧在保持刷题啦~ 目前是跟着一本前端算法 ...
- Python小屋刷题软件2425道题目分类速查表
"Python小屋"编程比赛正式开始 Python小屋刷题软件客户端使用说明(视频讲解) Python小屋刷题神器最近升级的新功能介绍 每次录入新题目时都会更新下面的分类表,请注意 ...
- 有关古文的C语言编程题,这80道国学题,既经典又有趣!值得珍藏!
原标题:这80道国学题,既经典又有趣!值得珍藏! 点击箭头所指的世界名著每日读,每日陪你有品位地阅读 编辑:世界名著每日读(ticesmall) 1."但愿人长久,千里共婵娟",其 ...
- 【每日进步一点点】C语言刷题技巧及训练1
恭喜你发现宝藏,这里是刹那芳间,很高兴为您服务~ C语言编程题 相信很多同学学校的C语言考试是上机做编程题叭,不要慌,这里将带你进行一个初步的入门,进行一些简单的编程题练习. Anyway, 请一定要 ...
最新文章
- AI对抗冠状病毒爆发的11种方式
- python字符串打印教学_python字符串格式化教你正确打印 : D
- MatLab基础设置
- eclipse 使用jetty调试时,加依赖工程的源码调试方法
- probability space 概率空间,Filtration,σ-algebras
- 贪婪算法在求解最小生成树中的应用(JAVA)--Kruskal算法
- Can I Delete Administrative Shares (e.g. C$) in Windows?
- 元旦节前python网络编程趣味小游戏
- 系统设计:API 接口的最佳实践
- 内存XMP是什么意思?有必要开吗?内存XMP模式的作用与开启教程
- android的got表HOOK实现
- Spark面试题(2)
- vue的h函数_vue 中的h函数
- Django models常用Field介绍以及常见错误解决
- lsdyna如何设置set中的node_list_如何使用Python处理HDF格式数据
- 疑难杂症:同网段ping不通,跨网段建不了链,怎么破?
- 中考计算机考试辽宁,中考考哪些科目(2019辽宁中考科目及分值)
- python 通达信数据_[python]沪深龙虎榜数据导入通达信的自选板块,并标注于K线图上...
- zip和unzip用法
- Anaconda+Tushare安装运行宝笈
热门文章
- 想知道视频配音软件哪个好用?安利这些视频配音软件
- 成绩排序_给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。
- LeetCode·312.戳气球·动态规划
- 物联网时代骑行头盔会变成什么样子
- JS获取当前时间方法
- udp和tcp切换之坑
- Opencv 图像处理-Contours函数提取轮廓及感兴趣区域ROI的必用且实用操作技巧-(涵盖Contours的一切使用基础,附代码段)
- Android【SDK目录结构】、【HelloWorld项目的目录结构】、【源码sources目录结构】
- 车联网深度报告:新基建重要方向,5G应用明珠 | 附下载
- Fiddler Everywhere抓包配置