谈谈算法的学习
本文是根据【帅地玩编程】微信公众号上的一篇文章做的笔记和再拓展。
本地防丢失: leetcode 刷500道题,笔试_面试稳吗?谈谈算法的学习.pdf
1.实际笔试中和LeetCode中算法题的不同点:
- 实际笔试中,往往是情境题,所用算法思想是不直接的;
- 实际笔试中,有时间和心态的因素
2.笔试中,几种最常见的题型
这一部分中对题型的分类,和后面第3部分归纳总结中对题型的分类是在两个不同的层次上的(更抽象 vs. 更具体),视角上的维度上也有差异。也是需要自己再拓展补充的部分。
2.1 考察基本的数据结构
在面试中常出现。如:二叉树的遍历、链表的逆序等。。。
2.2 考察某种算法思想
动态规划、回溯、枚举、深度/广度、贪心、二分等。。。
2.3 边界条件考察:考思维严谨程度
这类型的题,估计你一看就有思路,知道该怎么做,但是,它的边界条件特别多,需要分很多种情况来讨论,特别容易出错,有时候会让人陷进去,越做越复杂,这类题主要考场你的思维严谨程度。
2.4 找规律、数学公式类
3.如何刷题?如何学习算法?-- 归纳总结
这一部分中对题型的归纳分类,和前面第2部分对题型的分类是在两个不同的层次上的,视角上的维度上也有差异。也是需要自己再扩充拓展的部分。帅地玩编程公众号作者建议按题型刷题,便于归纳总结。
3.1和数组相关的题型
…
3.2基本数据结构操作相关
如链表的各种操作:逆序(部分逆序、按某种条件逆序)、判断是否有环,环的入口节点、删除指定节点等。
二叉树的各种操作:各种非递归的遍历操作(前中后、层)、二叉树的公共祖先、根据前中后的遍历结果来重构二叉树等等。
队列、栈相关操作:最小栈、来队列来实现栈等。
3.3 字符串相关问题
对于字符串相关问题,90% 可以用动态规划来解决。反正对于字符串问题,我一般想法就是能否套用动态规划,字符串问题有点多,不过你有时间,建议总结。例如:通配符的匹配、最长公共子串、最小编辑代价、最长回文串等等。