面向读者
程序员面试经常会考算法题,对于重要的算法题需要非常熟悉。同时,可以将算法中的编程思维举一反三应用到工作实践当中。
学习Tips
- 在学校里,我们习惯的的教学方式是先学理论知识,实践的时候可能会用上,我也是走了一些弯路才意识到,这种传统的学习方式不适合学习编程。编程是一门构建的学问,需要多编码,深思熟虑,专注实践,熟能生巧。
- 看了不等于会了,每个程序员都需要构建自己的知识库,将自己在实践过程中的思考总结下来,反复迭代和打磨自己的技能。如果不放慢脚步认真思考,往往会花费更多的时间或得到更差的结果。
- 每一个专项学习完基础知识后,开始做题,先自己想思路,如果十分钟还没有想到思路,看题解,理解后自己在leetcode进行编码。
- 每一个专项练习结束后,可以以写博客文章的形式输出。思考和总结专项内容,方便日后回顾。
- 坚持刷题,战胜自己的拖延和懒惰,厚积薄发。正如乔布斯所说:”过程即奖励“。
专项内容
模块 | 简介 | 完成 | 总结 |
---|
整数 | 基本的数据类型,使用时需要主动考虑边界情况,比如除0、正负数、计算是否会溢出等;对「二进制」的位运算也要非常熟悉 | ✅ | 链接 |
数组 | 数组是由相同类型的元素组成的数据集合,占据连续的内存按照顺序存储数据,解题常用的方法为双指针 | ✅ | 链接 |
字符串 | 字符串由任意长度的字符组成,也是一种特殊的数组 | ✅ | 链接 |
链表 | 在链表中,每个节点包含指向下一个节点的指针,这些指针把节点连接成链状结构,比数组插入和删除的效率更高 | ✅ | 链接 |
哈希表 | 速度快!哈希表中插入、删除和查找一个元素都只需要O(1)的时间 | ✅ | 链接 |
栈 | 后入先出的特点,插入和删除的操作都发生在栈顶 | ✅ | 链接 |
队列 | 先入先出的特点,和我们日常生活中排队的顺序一致,新元素插入队尾,只能删除对了最前面的元素 | ✅ | 链接 |
树 | 想象成公司的组织架构,一个CEO下面有若干副总,副总下面若干经理,经理下面若干基层员工;面试时需要重视二叉树,每个节点最多只有两个子节点 | ✅ | 链接 |
堆 | 根据根节点和子节点的关系,堆又分为最大堆和最小堆 | ✅ | 链接 |
前缀树 | 又称为字典树,用一个树状结构存储一个字典的所有单词 | ✅ | 链接 |
二分查找 | 一种针对排序后数组的查找算法 | ✅ | 链接 |
排序 | 将若干数据按照特定的顺序进行排列 | ✅ | 链接 |
回溯法 | 在解决问题时的每一步都尝试所有的可能选项,最终找出所有可行的解决方案 | ✅ | 链接 |
动态规划 | 面试中的热门话题,题目问的是问题的最优解,或者问题的解的数目 | ✅ | 链接 |
图 | 图由若干节点及节点之间的边组成 | ✅ | 链接 |
刷题记录
日期 | 记录更新 |
---|
2023.5.17 | 完成每个主题的基础知识学习,Leetcode刷题完成小里程碑:100个 |