欢迎光临散文网 会员登陆 & 注册

《代码随想录》四刷,秋招求offer!

2022-08-17 10:13 作者:代码随想录  | 我要投稿

今年秋招的录友们,如果已经面了几次试,就会发现 秋招算法题目中,代码随想录中的原题出现概率特别的高。

这是星球录友的日常打卡:

所以算法题方面的准备,至少把代码随想录刷两遍,如果有时间的话,四刷是最好的。

因为只刷一遍真的领悟不够深入,而且没成体系就忘了。

星球里有这样一位秋招录友,每刷一遍代码随想录,都会做一个详细的总结分享在星球里。

这是他当初三刷的心得,三刷,与诸君共勉,秋招见!,大家也可以去看看他的一刷,和二刷的心得,基本大家的刷题过程都是这么一步一步过来的。

当然在星球里也很多其他录友的分享,可以在星球置顶3,看到:

以下是他分享在知识星球里的四刷心得,对各个模块都总结了一套合适自己的套路和方法论。相信大家如果四刷,也会达到这个程度。

--------------------------------

马上秋招了,自我感知算法可能能应付面试,但是一些大厂的笔试应该是过不去的。

目前也投了一些提前批,大约20多家,有消息的只有8家,最终走到终面的只有一家,说是这周给消息,但是给HR发消息,没有回复,大概率也是凉了。

其中最痛心的莫过于几家公司给了我笔试的机会,但是还是没能挺进面试,说白了,算法不够熟练是硬伤。

这其中一部分是因为确实一部分做过的题,比如KMP,比如一些贪心的题目;

另一方面是ACM格式的题目,输入输出还是有所欠缺,导致消耗时间过长,基于此,我计划四刷代码随想录,之后再补一补ACM的题目,就到八月底了,之后全力冲秋招,结果未遂人愿。

代码随想录四刷的时候只要了12天(PS:真不是炫耀,看我前面几刷的总结就知道,我是不折不扣的菜鸟转码不知数据结构为何物的选手),而一刷花了我大约一个半月,还差点劝退。

当然了,虽然速度快了,但是每刷一次都会有新的收获,这次的收获在于发现了顽疾,具体怎么说顽疾呢?

不是说hard就难,而是一些思路复杂,实现简单的题目在每次的刷题中,都是朦朦胧胧的。

没错说的就是你,出来吧,贪心,KMP(包括但不仅限于这两个,但是我目前投的这几家是真喜欢kmp啊,另外咨询下卡哥以及各位大佬,这个kmp要学到什么程度啊,目前只能做到strstr())。

之前做题的顺序和解决问题的思路和感想心路都分享过啦,这次就试着说说四刷后各个章节我自己历次容易翻车的点。

数组、链表

数组、链表都是一次过(但是构造链表还是需要多次debug,主要啊原因是没弄清楚index指的是序号还是元素的个数——简单说就是第一个元素是第1个还是第0个)。

所以说,无论是笔试还是面试还是要认真读题的,如果是面试就要仔细和面试官确认,多问一句好过直接pass

至于螺旋数组之流则需要先写大的骨架,比如定好四次循环,仔细想想会用到哪些参数,再把肉填充好。

如果有地方没想周到,再慢慢填充内容,我想这么做问题就不大了(一些项目的理解大致也是如此)。

另外双指针也是一个比较有意思的点,需要自己总结,比如单向双指针,相向双指针,能否取到的开闭条件(即卡哥所说的左开右闭,左闭右闭之流)。

一般来说同向的约束条件是走的快的那个和目的边界的关系,相向的话就是两个指针的关系。

哈希表、字符串

至于哈希和字符串的问题主要在两个方面:哈希主要在于stl的内置algprithm要足够熟悉

比如各种初始化,各种插入,有的时候不是因为没有思路写不出代码,而是不够熟悉STL的一些操作(PS:不光是set,map,其他的诸如deque,list之流,也应该熟稔于心)。

分享当时自己的一个异想天开的想法:曾经在一道题中我想给unordered_map按key排序,以降低时间复杂度,结果显而易见,不行!

(PS:原因是首先 std::unordered_map的迭代器类型是ForwardIterator,而不是要求的RandomAccessIterator;此外,对于unordered_map要求的dereferenced RandomIt的类型,unordered_map的是 pair<const Key, T>,它不是MoveAssignable(可移动可分配的),因为const无法变更,因此第二个要求也不符合。因此,务必注意,不能使用sort()对unordered_map结构进行排序。)。

另外stl里是有优先队列的,不用傻乎乎的自己写堆,真的醉了,但是也需要明白其本身的初始化,操作等;

而字符串的相关问题在于细节的处理和KMP(next数组的求解、和while而非if的回滚)。

二叉树,贪心

之后是二叉树,主要玩转两种方法,一种递归一种迭代,按照卡哥的顺序,迭代先易后难,递归先难后易(主要指理解层面)。

主要在于递归截止条件,单层递归逻辑和返回值,老三部曲了。

其实有套路真的是简单,比如回溯,甚至还有模板。

真正难的是没有套路的,没错就是贪心,别说其他的题目,就是代码随想录里的题目,也就是四刷完后,才敢说差不多了。

一想到这儿不禁回想起那台跑环形拉力的加油车,“非要跳一跳的游戏”,还有摆来摆去的序列。。。。。。都是泪。

对了,还要有反向思维,比如可以把不合适的挑出来,剩下的就是合适的,再比如,要考虑值为零的特殊情况,就可以把这个数前置,“预设战场”。

回溯、动规

至于回溯和动规,回溯拿下模板,别管是部分深搜,还是什么N皇后,解数独,都是纸老虎。

至于动规,把dp的定义,递推公式,初始化,遍历顺序,弄清楚,不行就打印出来,大体都能解决

所谓动规,个人感觉就是前人栽树,后人乘凉,前人干过的事,后人就不用再推了,拿起来直接用。

额外再接个雨水,算算矩形面积,四刷也就到这里了,接下来磨刀霍霍向ACM。

球球了,孩子只是想要个offer,各位,晚安!

-------------------------

最后也欢迎大家加入代码随想录知识星球这里有很多优秀的人,有很多精彩的事!

我在星球里详细回答了3000+个问题:

基本你目前的疑惑,你的前辈录友们在星球里都问过我了,可以在星球置顶3,找到星球问答的快速链接:

已经有1w+录友加入了知识星球方向比努力更重要,一群人可以走的更远!


《代码随想录》四刷,秋招求offer!的评论 (共 条)

分享到微博请遵守国家法律