【Leetcode】目前300题,大部分二刷,总感觉自己是在背答案一样,怎么破?

 

1,一开始学习的时候,就是刚学完数据结构算法,刚开始做题,说实话,一个easy题目都需要半个小时,甚至好几个小时,非常正常,因为这个阶段你是在学习,不是在做题,要知道,算法数据结构,和刷题,还是差别很大的,学那些数据结构知识只是“知道,了解”,而LeetCode是“应用”,这里面有很大的鸿沟的。

2,上面那个状态,我个人认为,至少需要持续到300题以上,才能缓解,因为这阶段都是在“学习”,不是“刷题”,但是你刷了300+,你就会初步的算法思维和写码能力,那么这个时候,很多算法你也会了明白了,这个时候就快了,差不多20-30分钟能解决一个题目。但你对300题的技巧方法并不是能融会贯通记住,二刷也是在融合贯通的过程中,所以感觉是背答案。

3,等你刷到500+,基本已经登堂入室,那么就差不多很快了,但还需要多刷,才能记住,巩固。说实话,第一阶段,是最难的,很多人都倒在了第一阶段,因为第一阶段,至少需要持续3个月以上。

下面是我的刷题方法,给大家介绍一下:

当年自己第一遍刷的时候,特别痛苦。一天就3道题,持续了两个月吧。后来刷的多了,一天5道,再往后,一天10道,15道。刷了两遍后,一天可以30道也不累。以现在的水平,可以一天100道。毕竟很多题刷的太熟了,就是在打字。

简单说一下我认为的刷题几个阶段

  • 1,第一遍:知道。直接看答案,不要自己想,了解所有最优解,方法技巧第一。做题套路,以印象为主。
  • 2,第二遍:熟悉。过easy题,记住;做medium,重点题背,反复背。最简单会,大多不会。记住做题套路,以记住为主。
  • 3,第三遍:做题。做easy题;做部分medium题,hard题有思路。夯实medium基础。熟练运用做题套路,以做题为主。
  • 4,面经:做面经,开阔思路,了解出题形式。基础决定上层建筑,基础牢轻松,不牢就痛苦
  • 5,第四遍以上:刷题。

其实我感觉,在前4个阶段,都不叫“刷题”,那是做题,在学习,只有在第四遍,才叫刷题。没有人一遍就会,大多数人都向快。直接做题,不管不顾基础知识。很多人连Segment Tree,BIT,Trie,Union Find这种数据结构都不懂,遇见就刷,自己想,怎么可能想的出来?

所以刷题最重要的,第一步,就是了解所有的数据结构,做题方法,基础算法。从基础数据结构HashMap,HashSet,到TreeSet,TreeMap,Deque,LinkedHashMap;到各种对刷题来说的基础算法,各种排序算法,DFS,BFS,Sliding Window,sweep line,等等。99%的人这些都没有学过,就直接做题,做两道就想类似的题自己能做出来。

如果刷题这么容易,那人人都能进Facebook,Google了。

不可能的。我告诉我学生的方法,第一遍就是看答案。在第一遍刷题的时候,很多题其实是一类方法,但自己做的时候并不知道,然后自己做不出来就感觉挫败,其实是方法不对。所以在第一遍的时候,就是在看答案,最优解,去知道什么是刷题,理解所有的算法,原理,套路。建立一个较为完整的刷题思维体系。这样才能在遇见不会的题,想法思路才能正,才能有感觉最优解的方向,否则想一上来做几个题自己就知道最优解了,不可能的。

这里多说两句。很多人反对第一遍刷题看答案,认为就是自己做。当年我第一遍刷题的时候,举几个例子。

LC 76 怎么想都想不到,看答案感觉这解法真厉害,做多了才发现,有一种方法叫Sliding Window。

LC 56,看了答案才知道,还有个扫描线算法。之前想了那么多,都是错误的方向。

LC 200,看似简单的dfs,bfs,最后才知道flood fill。。。

LC 215,quick select

这种情况我相信每个人都遇见过,还有数据结构不好时,TreeMap都不知道是啥,PriorityQueue也不知道怎么用,LinkedHashMap,没听过。

所以现在回想起来当年第一遍刷,感觉费了那么多时间想这些,真的是浪费时间,因为想题想思路是重要的,但不应该把时间花在想的是这些已有的固定方法数据结构上,如果做这道题之前就知道了数据结构,知道了算法,那么我至少应该有个想的方向。即使想错了,也能说,啊,这个问题应该用sliding window啊,而不是发现,哎,还有个这样的方法!还有这种数据结构叫TreeMap!

就像学数学,知道1,2,3,不知道4,5,6,那怎么能算出2+5呢?

至少也应该把10个数认全再算加减乘除吧!

所以我认为浪费时间在这个补基础的点,不值。

与其这样,还不如第一遍就看答案,以题带练,带补,学习人家的最优解,建立思维体系,补数据结构,补算法知识。而第二遍时,才是真正自己想。这样做,一点不耽误锻炼思维过程,锻炼逻辑基础。这是我刷了这么多题感悟到能最快刷题的方法,现阶段我认为没有之一。

而第二遍就是要自己想了,第一遍已经有了思维,现在就是要培养自己的做题能力了。很多题第二遍看感觉自己以前没做过,正常,没人能一遍记住。但这遍就需要自己先写答案,因为你很多已经有了大体的方向感和目标,自己多多少少能写出来一些。然后这边尝试自己写,加深印象。

第三遍就是再过一下,再熟练所有套路,就需要牢牢记住。第四遍我认为需要脱离lc,需要做面经了,看看公司面试是怎么出题的。如果你的目标是北美找工作的话。

另外不建议刷800,主刷前400,就够用了,毕竟,前400能刷完的,理解的了的,10中2-3个人而已。

其实这些东西说起来容易,做起来很难。 每一遍其实都挺痛苦的,需要一个循序渐进的过程。我不是什么天才,我到现在的水平,基本上全职刷题,上课只是副业,8-9个月的时间。以数量来看,留学两年多,刷题过3000。不重复的题,就做过过千了。后来我把lc前400题所有题解法录成视频,录了近半年。所以不是看到一个人刷题厉害怎么聪明,而是踏踏实实的努力。

毕竟最快的捷径,就是没有捷径。

当然也不是每个人需要做到这种程度。公司面试题,很多题难度不是那么高,很多人2,300最后运气好也进去了。但如果想看到一道题就有思路,就能写出来,想有这种硬实力,我认为,最少需要4,5个月的时间。

我也见过那种,天赋异禀的,有那种只刷了100多的,聊天发现想法特别正,我感觉自己两遍才能有那些总结过的想法。还有那种,交流能力极强的,60多,各种店面过,各种要hint去交流暴力解过的。但自己也说这样onsite肯定不行,也就是店面而已

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/450020.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nonterrestrial Networks (NTN) for 5G and Beyond

Overview In this paper, we’ll take a look at the current state of NTNs, some of the new applications being explored, and crucially, the technical challenges that we’ll need to overcome to make it a viable market. Finally, we’ll get an overview of the w…

2024 年 10 款最佳免费无限的数据恢复软件工具

十大无限的数据恢复软件工具 数据丢失可能是一场噩梦,无论是由于意外删除、系统崩溃还是硬件故障。值得庆幸的是,有多种数据恢复软件工具可以帮助您检索珍贵的文件和文档。在本文中,我们将探讨可以拯救世界的十大最佳免费无限数据恢复软件工…

electron项目在内网环境的linux环境下进行打包

Linux需要的文件: electron-v13.0.0-linux-x64.zip appimage-12.0.1.7z snap-template-electron-4.0-1-amd64.tar.7z 下载慢或者下载失败的情况可以手动下载以上electron文件复制到指定文件夹下: 1.electron-v13.0.0-linux-x64.zip 复制到~/.cache/electron/目录下…

C/C++ - 容器vector

目录 容器特性 构造函数 默认构造函数 填充构造函数 范围构造函数 拷贝构造函数 内存布局 大小函数 size() 函数 capacity() 函数 empty() 函数 resize() 函数 增加函数 push_back(const T& value) emplace_back(Args&&... args) push_back和empla…

HDMI2.1之eARC简介-Dolby Atmos和DTS:X

文章目录 eARC目的更大的带宽更高质量音频支持对象型音频与CEC(Consumer Electronics Control)的兼容性: 适应流媒体发展Dolby AtmosDTS:X高分辨率音频更高的音频位深度和采样率低延迟音频 对象型音频格式独立对象三维定位动态音场适应性和灵…

Unity C#高级特性 Partial 详细使用案例

文章目录 实例 1:分隔UI逻辑实例 2:Unity编辑器自动生成代码实例 3:数据模型分割实例 4:序列化扩展实例 5:多视图架构实例 6:Unity编辑器自定义 inspectors 在Unity中,部分类(Partia…

【文本到上下文 #8】NLP中的变形金刚:解码游戏规则改变者

一、说明 欢迎来到我们对不断发展的自然语言处理 (NLP) 领域的探索的第 8 章。在本期中,我们将重点介绍一项重塑 NLP 格局的突破性创新:Transformers。在我们之前对 seq2seq 模型、编码器-解码器框架和注意力机制的讨论之后&#…

UE4 C++ UGameInstance实例化

1.创建GameInstance C类 2.在.h添加变量 class 工程名称_API UMyGameInstance : public UGameInstance {GENERATED_BODY()public: //定义了三个公开的变量UMyGameInstance();UPROPERTY(EditAnywhere, BlueprintReadWrite, Category "MyGameInstance")FString Name…

第二代视频换脸工具facefusion

GitHub - facefusion/facefusion: Next generation face swapper and enhancer官方地址 1.环境安装 Windows - FaceFusion Windows Python winget install -e --id Python.Python.3.10 PIP python -m ensurepip --upgrade GIT winget install -e --id Git.Git

Java多线程--JDK5.0新增线程创建方式

文章目录 一、新增方式1:实现Callable接口(1)介绍(2)案例(3)总结对比 二、新增方式2:使用线程池(1)问题与解决思路1、现有问题2、解决思路3、好处 &#xff0…

回归预测 | Matlab实现RIME-CNN-LSTM-Attention霜冰优化卷积长短期记忆网络注意力多变量回归预测(SE注意力机制)

回归预测 | Matlab实现RIME-CNN-LSTM-Attention霜冰优化卷积长短期记忆网络注意力多变量回归预测(SE注意力机制) 目录 回归预测 | Matlab实现RIME-CNN-LSTM-Attention霜冰优化卷积长短期记忆网络注意力多变量回归预测(SE注意力机制&#xff0…

基于Java SSM框架实现健身后台管理系统项目【项目源码】

基于java的SSM框架实现健身后台管理系统演示 java简介 Java语言是在二十世纪末由Sun公司发布的,而且公开源代码,这一优点吸引了许多世界各地优秀的编程爱好者,也使得他们开发出当时一款又一款经典好玩的小游戏。Java语言是纯面向对象语言之一…