查看: 4973| 回复: 13
跳转到指定楼层
上一主题 下一主题
收起左侧

[其他] 刷题新手求建议

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
本帖最后由 oscar.zth 于 2020-7-22 21:07 编辑

我目前大三CS在读, 因为准备2020的秋招,最近一个半月集中分类刷题,但感觉没啥起色,感觉DFS/BFS, Tree这种还行,毕竟有很多模板,但有些题比如类似于two-pointer和array/string based这种没有模板,要自己设计算法的题感觉还是很吃力,最近刚刚做了两个OA感觉一个半月刷下来好像没什么效果。而且周围认识同届的同学都在准备考研/research, 没人刷题找实习,感觉自己一直孤军奋战....

现在我刷题其实就是读题,然后分析,如果没有思路,就直接去discussion了,然后理解了大概,背着写一遍,如果还是不理解可能就要多看然后用笔画一画。感觉这种方法,没有自己的思考过程,是不是太廉价了...但也有观点说如果想很长时间,其实是浪费时间, 所以不知道现在balance在哪里

另外关于复习以前做过的题目,大概频率是什么

请问前辈有什么建议吗?

十分感谢!


上一篇:CS 本科学到什么程度的时候 就可以去刷题了?
下一篇:探讨一下记忆力的问题。。(best practice for 题海)
onefly 2020-7-23 11:29:49 | 只看该作者
全局:
- 一定要使用自己最擅长的语言,不要想其他的,不要引入额外的复杂度;
- 复习基础算法,如排序,二分查找,树的遍历等,同时做一些基础题;
- 简单的递归,比如树的一些题目,是最容易引导你进入刷题状态的;
- 递归是几乎所有有技巧的题目的基础,栈是递归、树是递归、回溯也是递归、动归更是递归;
- 除了递归之外,剩下的基本是考察基础操作的题目,比如螺旋打印矩阵等等,一定要注意细节;
- 每道题 10 分钟完全没思路就看答案;
- 如果连续有 5 道题目看答案了,去补习知识,不要再做了;
- 代码超过 20 行了,一般情况下说明写的有问题,直接看答案(确实有个别非常繁琐的题目,面试一般不考);
- 开始的时候按分类刷,不要按顺序刷;
- 如果遇到完全没有思路的题目,不要悲伤,不要觉得自己是个傻瓜。秉承「闻过则喜」的态度,试想如果是面试时候恰好考到这道题目呢?
- 刷过了过几天又忘了也没关系,根据艾宾浩斯记忆曲线,前几天是忘得最快的时候,多看几遍;
- 当然,死记硬背是没用的,一定要理解题目;
- 做题的时候身边要有白纸,随时在纸上画下示意图,不要空想;
- 做了几道同类题之后,总结做题模板,比如说 backtracking 的做题模板;
- 后期刷熟了,不要分类刷,随机刷;
- 已有的题库就当做例题,反复看,彻底学透。每周参加周赛,做新题,作为模拟面试。

最后一点,刷 LeetCode 其实就像是大学里的期末考试,如果你两周复习时间可以搞定一门期末考试,那么两周时间也完全能搞定 LeetCode。要做到「战略上藐视,战术上重视」。

按照考察的方面,题目大概分成两类:

1. 递归;
2. 其他题目。

拿到题目首先要思考

1. 怎么才能把题目的输入规模缩小,简化为规模更小的问题
2. 另一方面基础情形是什么

然后在考虑选用哪种实现方式,是回溯还是动归。

## 特别注意的地方

- 不要沉迷于研究语言特性。

    就像上面说的,使用自己最熟悉,日常使用最多的语言。不要觉得 C++ 或者 Java 或者 Whatever 刷题最爽,或者你看的答案采用了什么语言,抓住主要矛盾,你是来刷题的,不是学习新语言的。我之前犯得错误就是边学 Rust 边刷题。

- 不要沉迷于数论

    LeetCode 上有一些涉及到数论的题目,但是代码面试不是 ACM 也不是你的大学期末考试。最多熟悉一下排列组合算法、全排列和欧几里得算法就行了,不要沉迷于数论。

- 要总结自己的特殊问题

    说了这么多,都是共性的问题,但是每个人都会有自己特殊的问题。比如说我的问题就在于不太敢用字典,总觉得会让人感觉投机取巧,我一个工作四年的人,肯定是知道字典的,但是做算法题的时候总在潜意识里避免使用。实际上 LeetCode 第一题就用到了字典。

补充内容 (2020-7-24 12:26):
这是我自己的笔记,还有一些具体类型的刷题经验,感兴趣可以去 GitHub 上看,这里就不展开了。https://github.com/yifeikong/not ... ithm/00-leetcode.md

评分

参与人数 15大米 +27 收起 理由
xiaohuangyaii + 1 给你点个赞!
hanyue04 + 1 很有用的信息!
xiaohuo-mandun + 1 给你点个赞!
liuyubo1121 + 2 很有用的信息!
GreenHill + 1 谢谢分享!

查看全部评分

回复

使用道具 举报

全局:
时间就是用来 浪费得。没有人刷一个月就牛逼了,牛人都要刷一年左右。至少几千题 我是指竞赛。你知道你为什么会茫然么?1. 数学不好,无法抽象,2. 题做的太少,没有自己得模板 3. 你自己得体系建立了么? 搜索,基本数据结构, 排序 , 贪心, dp, 图论,数论, ? 3,引用大神得话“Many coders ask me how to improve their own performances. I cannot say anything except "solve and review and prepare your library".

”
回复

使用道具 举报

全局:
题量可能还不够。刷多一些吧。一个多月了,可以尝试独立解题,45分钟实在没思路再看discussion。45分钟是一个面试的时间限制。
另外,每道题都要记着,你现在做的这道题曾经就是很多人被面过的题,努力把它解出来你可能就拿到offer了
回复

使用道具 举报

🔗
conghao2016 2020-7-23 11:02:53 | 只看该作者
全局:
兔流走的应该是个量,一个半月目测不算长。。。
回复

使用道具 举报

全局:
CT0421 发表于 2020-07-22 20:46:28
时间就是用来 浪费得。没有人刷一个月就牛逼了,牛人都要刷一年左右。至少几千题 我是指竞赛。你知道你为什么会茫然么?1. 数学不好,无法抽象,2. 题做的太少,没有自己得模板 3. 你自己得体系建立了么
看着像是uwi tenpen讲的
回复

使用道具 举报

🔗
luckystar0316 2020-7-23 12:51:07 | 只看该作者
全局:
onefly 发表于 2020-7-23 11:29
- 一定要使用自己最擅长的语言,不要想其他的,不要引入额外的复杂度;
- 复习基础算法,如排序,二分查找 ...

请问递归有什么推荐的学习方法吗,感觉每次看到递归就觉得很不明白,谢谢!
回复

使用道具 举报

🔗
onefly 2020-7-23 16:01:15 | 只看该作者
全局:
luckystar0316 发表于 2020-7-23 12:51
请问递归有什么推荐的学习方法吗,感觉每次看到递归就觉得很不明白,谢谢!

Jeff Erickson 的 Algorithms,简直是神书。我是看了这个才顿悟的,看完前半本足以应付绝大多数 coding interview。
回复

使用道具 举报

🔗
 楼主| q3409tujgreia 2020-7-23 22:36:20 | 只看该作者
全局:
本帖最后由 oscar.zth 于 2020-7-23 08:43 编辑
onefly 发表于 2020-7-22 21:29
- 一定要使用自己最擅长的语言,不要想其他的,不要引入额外的复杂度;
- 复习基础算法,如排序,二分查找 ...
感谢这么长的干货!
我也是,一开始学了Rust觉得Rust特别牛逼就开始用Rust刷题,结果用Rust做数据结构的题,尤其是linked list,基本就写不出来,算法写对了也是一堆borrow checker、ownership问题,当时心态爆炸了,然后去reddit上问了一下,发现Rust就不是用来刷题的...
回复

使用道具 举报

全局:
onefly 发表于 2020-07-22 20:29:49
- 一定要使用自己最擅长的语言,不要想其他的,不要引入额外的复杂度;
- 复习基础算法,如排序,二分查找,树的遍历等,同时做一些基础题;
- 简单的递归,比如树的一些题目,是最容易引导你进入刷题状
看你的回答有一种大学期末考试前看班上第一名笔记的感觉
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表