leetcode
主要记录下 leetcode 那些有意思的题目。作为一名工程师,熟悉常见的数据结构和算法,能够在不同的场景下使用合适的方法解决问题,还是很重要的。
虽然工作的日常大部分都是更琐碎的事情,比如沟通,开会,处理线上问题,日常系统维护等,但是在我看来,算法依旧是工程师能力上限的一个衡量标准,我们需要知道面对不同的问题,如何去采取最合适的算法和数据结构去解决,更加事半功倍。
关于leetcode相关的写作大纲与说明
这里除了对各种分类的题目做一定的分类与说明之外,也会对一些最为常见的面试题做进一步的剖析,比如类似于LRU、接雨水等最为常见的一些题目
一些直觉与总结
算法的题目写多了,总是会有一些总结与直觉
- 一般有序的数组检索,都要考虑到二分查找
- 求出所有的排列组合,一般都是回溯法
- 最(短、少)等字样,一般都要考虑动态规划
- 关于树与图相关的题目,基本都需要考虑DFS或者BFS,且需要考虑递归的方案
- 关于那种O(1)的空间复杂度,需要考虑下类似于位运算的方式
- 双指针的应用场景,一般那种需要O(n)时间复杂度的链表题目,大概率是双指针
- 矩阵相关的题目,要注意定义好上下左右的变换边界
- 关于字符串的什么各种最小子串,一般就是滑动窗口