1. 楼主在坐标西海岸,还有一段时间毕业,在疫情期间正好潜心刷题,在这里简单和大家分享一些感想和思考,期间也看了各路前辈的博客和经验,受益不少。
每天刷题, 状态即是看看别人维持+慢慢的进步. 天天进步一点, 集聚努力的力量是很可怕的. 刷过的题可能换种说话换种思绪多的题解, 老是会有新的成绩. 坚持刷题, 让你不论何时都处在最佳的状况
网上开源资料很多, 我当时就看了 UCB CS61B https://inst.eecs.berkeley.edu/~cs61b/archives.html
MIT算法公开课: https://www.bilibili.com/video/av58608492/
红宝书: https://algs4.cs.princeton.edu/home/
对于刷题找工是足够的了
中间也对照着一些博客的总结来刷题
https://github.com/wind-liang/leetcode
https://medium.com/@syhh/leetcod ... %81%B7-aac34eff5cc1
对待Letcode前 90 题的话,只需要精通一门语言,识察属性定义、判断语句,循环语句,定义函数,递归。精通根基的数据结构,顺序表、链表、栈、队伍、哈希表,就可能开始刷题了。到了 94 题出现了二叉树,需要识察深度优先沿着某条搜索路线、广度优先沿着某条搜索路线。后边单独题也会用到图,但不多。期间繁多题目也涉及到繁多二进制的操纵,也供给一些补码的见闻,可以参照我之前归结的 趣谈计算机补码。工夫也会碰到很多自己之前不精通的数据结构,比如优先队列,TreeMap、线段树、并查集、前缀树等等,这些的话也不用急于精通,遇到的话再起初学习也不迟。
刷题时候我主要对着这两个图来刷。
2. 譬如你的时间有限, 譬如下个月就口试了, 你可能按照该公司命题频率来刷, 只是这个是只要会员有的功效, 据说出原题的几率还是挺大的, 尽管不是原题, 换汤不换药, 输入输出变一下, 字符串变数组之类的
如果时候有点充分, 可能按题目算法典范刷, 比如重点刷一下动态规化, 单调客栈之类的(对你不熟悉的题重心多刷, 繁多题都很类似, 刷多了就有感觉了).
3. 刷完然后记得总结
第一个即是归结一遍会加剧自己的印象,当用到一个之前用过的思路,结合极少关键词很快就能找到之前是哪道题,然后可以再相当这些题的异同点。同样,也可能轻易亲自以后的查找,更快的想起其时的思路。
第二个的话,可能对区别的算法之间的联系有更深的体会,从递归,到递归加 memoization,再到动态规划,最后举行动态规划空间复杂度的优化,用到的分治、回溯、动态规划会创造它们本质上原本是同样的,目前都对 115 题 印象深切。
一些多见的问题也会帮助亲自查漏补缺,譬如二叉树的中序遍历,在 94 题 我才识察原来另有 Morris Traversal,可以可以中序遍历的空间复杂度降为 O(1)。另有极少大神们的解法,标记最深刻的就属 第 5 题 的马拉车算法了。
4. 刷题不在多在于精,多做总结和反思,过几天整理好思路有时间再把过去的面经总结发出来。有用的话加个米,谢谢。
|