前言大家好,我是bigsai,好久不见!今天给大家分享一些自己的刷题刷题小方法,可能用处不大但可以作为参考。祝你更高效,更强大!最近在一些群聊和私聊中,遇到比较多的问题之一就是:刷题。大家也注意到了算法题打大公司的重要性,越来越多的人开始roll了!但是有的人是这样卷起来的,卷起来的时候惊呆了。今天针对部分新手的各种问题,谈谈我个人刷电源键的看法。刷哪些题?大家刷题的目的肯定是为了打大公司的面试笔试,还有一小部分是坚持刷题,保持感觉,提升自己的算法编程能力。那么你必须先掌握重点内容。哪些是重点内容?剑指offer:首先是剑指offer(https://leetcode-cn.com/probl...),剑指offer的优先级还是很高的,必须就业。牛客和力口平台都可以用简智出题,不过我个人比较推荐力口这个平台。第一次做剑指offer是在牛客平台和大家一起做的(虽然过了一段时间不知道大家还记得没有),但是前段时间在荔扣上做offer的时候遇到了一些问题(很少)我很早以前提交了我的代码并尝试了一下,发现wa。所以牛客的测试数据比较弱,力口的测试数据比较大。大多数情况下,你通过代码后,基本不会出现逻辑漏洞。除了大名鼎鼎的剑指offer,我推荐大家使用剑指offer的原因之一就是剑指offer的标题真的很经典!60多道题,内容涵盖链表、二叉树、图、队列、栈、哈希表等常见数据结构,常见算法和经典问题包括二进制点、动态规划、全排列问题、滑动窗口、贪心、分治、排序、位运算、dfs、bfs等等,做完这些题,你真的可以收获很多,学到很多!另一方面,剑指offer在面试笔试中出现的频率非常高。面试官考察的问题一般都是经典问题。buckle和sword指offer的题目,sword指offer是高频题库之一。LeetcodeHOT100|LeetcodeTop200LeetcodeHOT100:https://leetcode-cn.com/probl...LeetcodeTop200:https://leetcode-cn.com/probl...优先LeetcodeHOT100,力扣HOT100高100-某段时间从里口的题库中精选出的优质题(因为里口的题数一直在增加)。这些题和剑指offer差不多,都是高频题。困难,对于很多人来说特别容易卡住。但是如果力口HOT100能做完的话,其实可以加上剑指offer,差不多200题的题量还是挺可观的。目前里口有两三千道题,而且还在增加,几乎不可能完成里口。如果要按顺序做的话,推荐前200。力口的前200和力口HOT100的重合度很大,前200的质量还是很高的(不是说后者质量不行)high,只是刷这么大的题库,同类型同套路的题目会比较多),所以建议做完前200,做完这几个部分,大概可以出近300个优质题问题。我觉得应付大部分互联网公司的面试就够了,稍作改动就可以看的比较轻松。问题顺序?以上列出了要刷的题库。知道刷哪些题之后,有没有推荐的刷题顺序呢?你需要分类刷吗?我觉得要不要分主题类还是要看人。如果你有数据结构和算法的基础,比如考研或者平时对数据结构有很好的了解,了解常见的数据结构和算法的原理并能实现一些,或者有一定的解题经验,那么我建议您按顺序进行。客观的说,理口和剑指offer的题都比较难,有的需要高深的数据结构,但是也有比较巧妙的基于数据结构或者逻辑的思考题。如果你有数据结构和基于算法,??你就比较容易到达检查点。如果你在顺序刷的路上遇到不会的技能或数据结构,就去学,加进你的“大脑库”。如果你是一个真正的新手,那么你必须手动为自己找到一条可走的路,那么我建议你按照一些主题来突破每一个。因为你是新手,如果你不知道如何按顺序做这道题,你就学会了,当你做下一题时,你就学到了一个全新的东西。在没有基础的情况下,短时间内学习太多陌生的新事物,吸收困难,容易遗忘,会陷入学不会的苦恼。所以你可以把刷题当成一个台阶,一步一步往上爬。一开始,你一直在寻找a+b类型的easy易题。数据结构的题,从链表开始学习单链表、双链表、循环链表的插入删除实现,然后在题库中找链表相关题一一突破(链表还可以细分为链表插入、删除、反转、合并、搜索、排序等),在链表题目之后,二叉树题目,hash...这样,如果你学习了某个数据结构或算法技能在短时间内,不如多做题巩固吸收效果!在这种情况下,不要认为这很容易,就冲到下一个。如果你不敲代码,你可能不知道自己会遇到什么问题。三why为什么看到一道题不假思索?这种情况多半是因为见的少,写题也是一个缓慢的过程。看的多,刷的多,就会感觉速度更快。还有一部分可能是因为给自己安排的刷题路线不够平静。你肝火上蹿下跳,精神失常,这是不正常的。简单的问题很容易理解但很难实施?在这种情况下,基础逻辑可能缺乏训练,对编程语言的集合框架的掌握也缺乏。有些题可能会涉及到集合框架(Map,Set,List,Stack,Queen)以及各种嵌套和并发连接,需要你有清晰的层次感和逻辑感。解决问题需要熟练使用一种编程语言,熟悉这种编程语言的常用操作api、集合框架和功能。这些都是帮助我们提高效率的解题工具(不用每次都手写队列或者哈希表吧。吧)。对于这道题,建议先做几道简单的字符串处理题。很多字符串处理问题涉及到很多集合框架和逻辑控制。如果时间充裕,建议做一些PATB级的题来练习逻辑和编程语言的掌握。看了很多题解,为什么还是解不出来题?看了很多题没刷过,差别不是太大,印象比较淡。从学习的角度来说,刷题有点类似于我们学习数学的方式。数学题的公式和例题我都学过了,但还需要大量的练习才能真正掌握。只是每一行代码都是我亲手敲出来的,每一行代码的逻辑是什么,都是我自己想出来的,而不是去了解别人的思路。把整个程序从0到1完整的实现出来,这样才能实现一个完整的逻辑,然后可能会出现各种bug,自己debug,找出问题所在。你可以读解,你必须能完整地写出来。如果你看了1000+道题,你看不看解也没关系。但是如果你的刷子少于100,那么你看懂了,还是老老实实按照别人的逻辑闭卷复现吧。很多问题不体会,想不起来也就不足为奇了。综上所述,如果题数小于100,状态又不好,先做多题简单粗暴。如果做完两三百题状态还是差,那就要找别的原因了。遇到题时正确的刷题和学习方法是什么?确定调查点,确定思路。读完一道题,读懂题意后,首先要做的就是理解题意。当然,如果按照题目来刷的话,在这方面可能会轻松很多。首先你可以判断题型,是图论,二叉树,还是字符串,最常见的数组给出的一堆数据。有必要带着这类题目去查一下这方面的常用算法。比如给你一个数据数组,让你去查找和计算,它可能是双指针,可能是哈希,可能是位运算,可能是动态规划,也可能是贪心。但是大部分的题都是对各个经典算法的经典题做一些改动。有必要知道经典算法处理哪些经典问题。如果你能确定调查点,你就可以考虑细节并开始实现它;如果不能确定调查点,没有思路,不要直接看解法,要看题目标签上的提示。有时候你可能会看着一道题说:这道题的方法是什么?数据范围内的数据都是可以的,不同的数据范围可能有不同的使用方式(数组题比较多,有的题对数据有要求使用散列和原地替换)。最好阅读标签并思考它以获取灵感。如果您仍然没有灵感,请单击解决方案。您可以看看是否可以从标签标题中获得灵感。许多问题的解决方案都会给出足够的提示,以至于有些人看到后就能理解。如果还不会,就老老实实进去看看别人的思路,有的是视频,有的是图文,直到看懂为止,如果自己还是看不懂,要么请别人走人,要么放弃!写代码,在没有任何参考的情况下测试写代码的过程!对写代码的过程没有任何参考!重要的是说两遍,可以看思路,也可以看别人的代码,自己写代码不用参考也可以ctrlc+ctrlv,只要工程项目能运行,效率就是都是cv大法,但是笔试题基本上要求你闭卷,有的甚至要求你使用onlineIDE,没有完整的提示。编写代码时,经常需要考虑常见问题:测试数据边界(如Integer.MAX_VALUE、Integer.MIN_VALUE等边界值)、循环控制边界处理、结束数据处理(有时被遗忘)、特殊异常注意事项、取值范围是否合理,算法的复杂度能否跑出来,数据复制的深度,重复的遍历和操作简化,变量名清晰,注释比较完整……写完代码,用测试用例对其进行测试,以确保不会出错。力口经常出空值测试用例,因为这个wa已经用了很多次了。。。如果出现和想象中不一样的问题,先看看你的代码逻辑,看能不能看出问题所在。如果你能看到它,你就不能。如果自己打印出来或者debug自己找问题,等到改正之后,还有很多问题需要考虑和比较才可以ac。方法与结果对比不要以为AC完了就结束了。你要及时看看自己超过了多少人。建议从这两个维度来衡量你的代码:超越70%以上的人(根据自己的要求适当提高):大部分题超过70%,说明你的方法没问题,可能还有一些可以优化的小方面。比如StringBuilder代替String进行字符串拼接,使用char[]数组代替String进行遍历枚举等等。自己的方法在好方法的时间范围内:有些题比较复杂,大家都是最快的方法。你的代码可能比别人慢1ms,但会显得很慢。这个时候,你只需要确定你的方法是否过硬就可以了。你不必追求它。100%,不同的评价所花费的时间可能会给出不同的结果。大家可以看看大家的时间消耗范围。如果你的方法在几毫秒或最快时间范围的30%以内,其实是可以的。人家4ms,你5ms没问题,人家50ms,你70ms没问题,但人家80ms你800ms,差太多了,得看你自己的逻辑和代码了。另外,点击上一次的直方图,可以看到别人的代码,耗时少(有的现在跑的可能没那么快,因为测试数据变化),可以参考学习别人的处理方式它。巩固和完善这道题之后,看看有没有更巧妙的方法来处理题和解的区别。当你AC之后跟别人直接比较的时候,你会更感慨:还可以!如果感觉这类题型掌握的不扎实,想再练习,可以看看类似的题型,及时巩固。结论以上一些方法仅限于给一些初学者的建议,不一定非常准确和高效。你可以参考他们。如果以上问题差不多,建议每天一题签到。题量半年180+,一年。365题,相当客观!首发原创公众号bigsai,欢迎关注,共同进步!
