一亩三分地

 找回密码 注册账号

扫描二维码登录本站


Salarytics=Salary Analytics
查询工资数据
系统自动计算每年收入

科技公司如何
用数据分析驱动产品开发
coupon code 250off 立减$250

深入浅出AB Test
从入门到精通
coupon code 250off 立减$250
游戏初创公司招聘工程师、UIUX Designer和游戏策划
坐标湾区
DreamCraft创始团队
招聘游戏开发工程师
把贵司信息放这里
查看: 7095|回复: 66
收起左侧

[Leetcode] Leetcode刷题700+后的困惑与迷茫

  [复制链接] |试试Instant~ |刷题, leetcode
我的人缘0

分享帖子到朋友圈
xqfly | 显示全部楼层 |阅读模式
本楼: 👍   100% (2)
 
 
0% (0)   👎
全局: 👍   97% (43)
 
 
2% (1)    👎

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

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

x
楼主之前ECE专业,毕业后做了几年软件了,在职刷题,前前后后一年半多,楼主坚持目前刷了700道左右,大部分都刷了3遍。苦苦坚持,冷暖自知,大部分时间都是觉得很痛苦的。快秋招了,剩下时间不多,非常焦虑。地里刷题经验也看了不少,可还是觉得自己没收到效果。求各位小伙伴过来人不吝赐教!

之前也上过算法基础课,做题时也理解了答案解法,也分类总结了,但是:

1)一部分Medium+Hard难度的题目重新看到仍然难以想起来解法比如850. Rectangle Area II,还有497. Random Point in Non-overlapping Rectangles[很难想起来是用Reservoir Sampling去做]

,或者即使想起来线索也难以完整推导出整个细节比如Skyline Problem,用multiset去做的时候,entry/leaving event处理细节很模糊,想不起来

2)比较多的Medium题目再次写会出现bug,不是index忘了++,就是有typo,或者忘了某个push,或者习惯地无脑return res[其实应该return bfs_level]等等。

3)比较多的Medium题目现在看到答案就觉得会,一关上答案就缩手缩脚;由于这3遍刷题很多思路是看答案的,每次都自己写了一遍code提交代码accept。但是这个写code过程我经常回头去看答案[大概七八次吧],哪怕个变量命名/逻辑结构都想确保跟原来的答案一样简洁清晰优雅,是不是潜意识还是试图背下代码。。。。虽说理解了思路,但是没记住思路而是想背下代码

自我反省了几天,感觉这3遍间隔时间很长,半年前第一次,三个月前第二次,一个月前第三次,所以每次碰到Medium以及以上的题目,总感觉像新题目;另外就是全职刷题很累,很焦虑,一年以来楼主逼着自己一周刷题七天,周末稍微多睡下觉当作休息;还有就是刷题大部分过程都觉得很痛苦,也许影响了自己记住这些很想记住的解题思路。。。。。

我实在想不到解决办法,这样下去对结局也不甘心,虽说努力也未必有回报。。。。。

求各位大神支招!







补充内容 (2019-8-12 19:18):
看到这么多伙伴们的回帖,很是感动!

楼主今天仔细看了下Harvard CS50这种入门级编程课[由于楼主是ECE从来没上过什么CS入门课,都是靠自己自学,黑暗中摸索],其中Recursion的call stack等解释得特别好。跟我...

补充内容 (2019-8-12 19:20):
另外,楼主也认真学习了下Loop Invariants,似乎对克服循环代码出bug有较大帮助。可以参考下Stanford的这个 http://web.stanford.edu/class/ar ... /161-section-1.pdf.

补充内容 (2019-8-12 19:38):
找到了这个经验分享,看完觉得很燃,不知那位作者大佬能否也帮忙解惑一下?anyway,分享在这里 https://www.1point3acres.com/bbs/thread-537998-1-1.html

补充内容 (2019-8-17 22:00):
有朋友反应链接失效,其实我是直接Google的 “Stanford Loop Invariants”,第一个pdf就是

补充内容 (2019-8-20 18:44):
求助小伙伴们,有没有recruiter的email,可以share一下吗?私信给楼主就行,万分感谢!正在投简历,但是感觉有些慢。

评分

参与人数 18大米 +34 收起 理由
crescendo. + 1 给你点个赞!
cherryjia12 + 1 赞一个
zbh9000510 + 3 patpat
henryzbw + 1 赞一个
Hexame + 1 给你点个赞!
chenjly507 + 1 给你点个赞!
abc99 + 1 给你点个赞!
Sabrinacs松鼠 + 1 很有用的信息!
mchen117 + 1 赞一个
park02 + 10

查看全部评分


上一篇:Python刷题Tricks和Tips - 巧用range来解题
下一篇:找人約 mock interview
我的人缘0
WarriorZ 2019-8-12 14:34:48 | 显示全部楼层
本楼: 👍   100% (24)
 
 
0% (0)   👎
全局: 👍   94% (762)
 
 
5% (44)    👎
本帖最后由 WarriorZ 于 2019-8-12 14:36 编辑

我也有过类似的疑惑,现在也没有完全到一种看到一道hard马上能写出来的地步。可能楼上的大佬能做到吧。但是我有一个小小的心得可以和楼主分享一下。其实做一道算法题,最难的部分在设计这个算法,如何分解这个问题,有几种情况,每种情况如何操作,需要用到什么算法,为什么?需要用到什么数据结构,中间有什么trade off? 如何解决edgecase,然后根据你设计的算法把例子跑一遍,看看符合不符合你的要求。最后才开始写代码,其实算法你设计的完善了,写代码只是几分钟的事。我最开始刷题的时候,遇到的问题读完题目不管三七二十一马上开始写代码,写个for loop然后条件想半天,后来发现题目没理解清楚,又擦掉重写。这样是没用的。楼主你刷了700道题,可能只是抄了700道题的答案,我知道楼主肯定也下了不少功夫,下次刷题不时候不妨试试我的方法,先把思路理顺了,这样代码自然而然就写出来了,然后之后再遇到这道题就发现自己能秒了,甚至回字的四种写法都能写出来了。

评分

参与人数 12大米 +25 收起 理由
crescendo. + 1 给你点个赞!
forest0xia + 1 很有用的信息!
Guodooong + 1 很有用的信息!
kuboy + 2 给你点个赞!
mayer5 + 2 给你点个赞!
puchen + 2 给你点个赞!
Sabrinacs松鼠 + 1 给你点个赞!
park02 + 10
Tina2018 + 1 赞一个
deardeergogo + 1 赞一个

查看全部评分

回复

使用道具 举报

我的人缘0
hotinherre 2019-8-13 11:28:48 | 显示全部楼层
本楼: 👍   100% (4)
 
 
0% (0)   👎
全局: 👍   98% (1063)
 
 
1% (14)    👎
而且好的代码, 应该是“清晰易懂”, 而不是 “简洁清晰优雅”。  
讨论区的很多高vote方法,我都觉得太追求简洁, 追求优雅了, 反而不是很好理解。 你要面试写出这种, 面试官一眼就看出来你在背题了。。 所以还是自己总结自己的模版, 自己有自己舒服的实现方式比较好!
回复

使用道具 举报

我的人缘0
337845818 2019-8-13 02:30:23 | 显示全部楼层
本楼: 👍   100% (4)
 
 
0% (0)   👎
全局: 👍   81% (700)
 
 
18% (162)    👎
首先呢, 题数目没什么意义. 就像你说的, 3遍了, 还是不会做.

山不在高, 有林则徐. 水不在深, 有江??

我建议你每道题都用绝对正确, 最蠢的方法去做. 比如很明显的n方, n立方, n!, n^n这样.

这样做的结果有2
1) 难题基本不能过, 但是你会看到38/50, TLE或者MLE -> 你离答案已经不远了.
2) 直接过, 但是慢 -> 你答案是正确的, LC的测试不够强, 但是你的思考方式已经对了

你这样做可以了解到
1) 自己算法到底是多少时间复杂度
2) 别人优化的地方在哪里.

不至于说闭着眼睛看见一个高票答案就噼里啪啦一抄, 抄了等于会了, 马了等于做了, 买了等于看了?

认认真真老老实实把题做明白了

评分

参与人数 2大米 +2 收起 理由
harrisonx + 1 三天之内..
instant_dev + 1 给你点个赞!

查看全部评分

回复

使用道具 举报

我的人缘0
本楼: 👍   100% (3)
 
 
0% (0)   👎
全局: 👍   99% (1027)
 
 
0% (9)    👎
楼主真的辛苦了 ^^ 其实几天前楼主一发出这个帖子我就看到了 当时在几乎一摸一样的心境中挣扎徘徊着 也不知道怎么回 整个人陷入一个谷底

我是在实习期间一个多月刷了250题 之前是完全无基础的 甚至也没有任何工程专业的基础打底 data structure和algorithm都没有怎么学就开始刷题 一开始也是靠硬想+参考答案 把答案吃进去然后换自己方式写 当时就觉得吧 我记性也不至于那么好?? 能把所有细节写清楚并且跑过test case应该代表我肯定是知道怎么写的 但是看了楼主帖子后 感觉我脑子里还是不由自主记下了别人写的答案的 光靠记肯定是不会写的 第二次写 哪怕就隔了一天 可能都对细节很模糊了 我在250题徘徊不前的情况下就停止刷了 上来问了很多地里分享经验作者的意见 很多都说接着硬做没有意义 不如回去把这250题重做几次

然后我最近干脆就去上Coursera的USCD Data Structure and Algorithms Specialization 这项目里面有6个课 视频都比较简短 作业很扎实 很多作业基本都leetcode medium 有的可能还是hard 虽然吧 他们也不讲解答案 但是我把algorithm那一课全部上完之后真的有了一点豁然开朗的感觉?? 这个课一直用一个数学的角度在讲算法 只给pseudo codes 也不带你从算法实现到real codes 我其实上的很不满意 但是最直接的结果是 我现在每天做DP做的很开心 已经和4天前第一次看到楼主帖子的心态完全不一样 XD

楼上有一楼可能说的很对 楼主可能已经非常强 但是对自己没自信 所以导致一些能做的题做不出来 像我上星期沮丧到谷底的时候 不仅题做不出来 生活智商还锐减 开车出门就迷路 在机场两次没搭上同一班飞机 我那天在机场都哭了 不懂自己是怎么回事 但是现在就完全没有了 题多少能做出来一些 每天学习新东西心情愉快 虽然我也没有什么好的经验可以分享给楼主 但是希望可以鼓励一下楼主 继续加油!!!
回复

使用道具 举报

我的人缘0
nlackx 2019-11-14 04:22:57 | 显示全部楼层
本楼: 👍   100% (1)
 
 
0% (0)   👎
全局: 👍   100% (19)
 
 
0% (0)    👎
看楼主说做一道做过的题还要反复回看答案,我就觉得那道题白刷了,因为没搞懂。在这种情况下,每题刷过的数量都失去了正向的意义。看了答案能写下来不叫搞懂。每一步都能答上为什么,才算。而且搞懂一题也不算什么,应该把知识点连成网。这就是面试的时候会有follow-up的原因。

我觉得单单 Accept 绝对不是一道题的终点,因为有可能你的方法效率很低,虽然给定test cases都过了,但时间空间不理想。因为有的方法如果效率低,面试官大概率不用你写,等讨论出满意的解法,再写。但 Done is better than perfect,能accept还算是里程碑的。看讨论区或者答案的时候,你会发现很多新的技巧和解题思路,一定要想办法搞懂,总结并且记笔记。这样才有积淀。

每道题都这样做的话,是挺花时间,但过一段时间,随着题目数量的增加,遇到新题的你多多少少会有熟悉的感觉。这时候就要专门花时间总结。比如说一类题用sliding window比较高效,而有些题得用DFS,DP。比如说LC301,有一种常考的变种就是只找出一个答案就行了。这时候你还用DFS的话就有点笨了。在这种对比下,你能体会到不同算法应该在什么场景下使用。

写得比较乱,想到哪写到哪。但都是真诚地分享我的个人经验。
回复

使用道具 举报

我的人缘0
ourlord 2019-11-13 01:06:21 | 显示全部楼层
本楼: 👍   100% (1)
 
 
0% (0)   👎
全局: 👍   97% (37)
 
 
2% (1)    👎
刷题一般两个阶段吧,我先说比较容易提高的:
1. 你有了想法,但是实现出来有bug。
2. 你看到题目完全没有思路,即使看了答案的思路也不知道他们怎么想出来的。

对于1,常见于大部分简单题,和一些中等题,你看到题目,记得自己以前做过,有个大概的思路,然后开始实现,写完提交发现怎么还是不太对。这种情况,处于脑子里的想法无法通过代码实现,比较容易提高,把遇到这种情况错误的题存下来,短时间内重复巩固。这同样也能在中等难度以上的题目中提高,难题看了没思路,去看答案,别看源码,就看思路,然后按照思路自己去实现一遍,再和答案对比,看自己实现的和别人实现的差距。这个阶段不需要题量,而是单纯的提高代码实现能力,这个阶段我个人觉得比海刷题重要多了。因为即使在职场上,别人让你实现一个功能,你知道是要实现abc,但最后写完qa测出来还是一堆问题,这不要说找工作了,现有工作都难保是吧。而且力扣上面会奇技淫巧的人多了去了,有时候即使自己写对了的题目,也去和别人的答案看一看,提高一下实现质量。

对于2,要有想法确实比较难,这个目前为止觉得就只能靠多看了。在1没有问题的情况下,多看开拓视野和想法,在遇到生题的时候有个大致的思路,然后可以正确实现出来,我觉得已经胜利一半了。有些难题真的就是太难了...奇技淫巧...写不出来真是拉倒吧,就当自己能力有限了。保证能把想法记住,以后遇到的时候有个大致想法,然后能够准确无误的把想法实现就可以了..
回复

使用道具 举报

我的人缘0
本楼: 👍   100% (1)
 
 
0% (0)   👎
全局: 👍   100% (1)
 
 
0% (0)    👎
在职刷题党路过只刷了100+,一点感悟分享一下,
首先不要把刷题当成一项应试作业,带着解决问题,锻炼思维的出发点去刷。
其次,除非刚入门,基础数据结构、常用算法思路(dp backtrack等)都没用过,千万别依赖答案,过分追求代码最优化,尽量自己慢慢分析、coding,就算暴力解法能AC也比看答案写好。
其三,暴力解法过完其实你脑子里会很熟悉这个题目了,大概率能自己follow up出优化的点,比如通过剪枝、加入dp等,再不济再看别人的答案,也能恍然大悟。

最后,个人理解最重要的是思维路径,而不是最终答案。映射到业务或者日常生活中就是解决问题的能力。
回复

使用道具 举报

我的人缘0
 楼主| xqfly 2019-8-16 20:36:00 | 显示全部楼层
本楼: 👍   100% (1)
 
 
0% (0)   👎
全局: 👍   97% (43)
 
 
2% (1)    👎
acmeasd123 发表于 2019-8-16 14:03
楼主能否重新分享下斯坦福的那个文件,链接看着过期了。多谢!

我是谷歌的,点击连接就变成下载pdf
https://www.google.com/search?q= ... chrome&ie=UTF-8
回复

使用道具 举报

我的人缘0
 楼主| xqfly 2019-8-13 19:48:32 | 显示全部楼层
本楼: 👍   0% (0)
 
 
100% (1)   👎
全局: 👍   97% (43)
 
 
2% (1)    👎
hotinherre 发表于 2019-8-13 11:24
前两个问题不大。 第三点, 我觉得楼主陷入背答案误区了。。 讨论区的很多解, 其实面试用都并不是很好,  ...

clean code是指bug free还是指变量命名简洁、逻辑简洁之类?
回复

使用道具 举报

我的人缘0
本楼: 👍   100% (1)
 
 
0% (0)   👎
全局: 👍   91% (284)
 
 
8% (27)    👎
337845818 发表于 2019/08/13 02:30:23
首先呢, 题数目没什么意义. 就像你说的, 3遍了, 还是不会做.

山不在高, 有林则徐. 水不在深, 有江??

我建议你每道题都用绝对正确, 最蠢的方法去做. 比如很明显的n方, n立方...

非常同意答主。追求刷题数量意义完全不大。建议刷一道就力求解决一道,要不然不理解精髓面试肯定也还是不会。另外有些大厂面试一般也不会出原题,所以不要指望可以压题,几率渺茫。

利益相关:某大厂面试官
回复

使用道具 举报

我的人缘0
anhenaiguo 2019-8-12 12:05:38 | 显示全部楼层

回帖奖励 +1

本楼: 👍   100% (1)
 
 
0% (0)   👎
全局: 👍   81% (13)
 
 
18% (3)    👎
跟楼主的困惑一模一样,纠结了好几天。
在职刷题好累好累,非常理解楼主。一个月前做的题肯定忘了。如果能全职刷题就好了。
希望有人能指条明路
回复

使用道具 举报

我的人缘0
wisdompeak2 2019-8-12 13:08:36 | 显示全部楼层
本楼: 👍   100% (1)
 
 
0% (0)   👎
全局: 👍   99% (208)
 
 
0% (1)    👎
如果你不着急找工作和跳槽的话,不妨把刷题当做一种乐趣。每天静心做一题,做完之后一定要反思和总结,尝试写一些心得类的笔记。和伙伴们一起在周末参加比赛,你追我赶,把提升名次作为一种动力。
每做完一道题肯定会有一道题的效果,算法题的世界对你而言就少了一只拦路虎。虽然其他的老虎还有千千万,但我不着急,因为我知道总有一天困难是会消灭光的。

评分

参与人数 2大米 +4 收起 理由
337845818 + 1 给群主+米
WarriorZ + 3 大佬又出来推销你的残酷刷题群了。

查看全部评分

回复

使用道具 举报

头像被屏蔽
我的人缘0
crazycodyman 2019-8-12 14:21:47 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

我的人缘0
vincentsong 2019-8-12 14:38:45 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (23)
 
 
0% (0)    👎
我还没到100,已经有些迷茫了。 和楼主一起加油
回复

使用道具 举报

我的人缘0
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   97% (112)
 
 
2% (3)    👎
感觉lz在准备gg?列出来的几道题都是gg那个面经的followup
我感觉lz可能还是没有花足够的时间去真正消化题?我自己刷题时(也是700+,这几道题也最近都做过)497是能自己想出解法的 skyline我一开始也是不懂 但是把为什么要有两个events理解以后 虽然每次写出来的解法都不完全一样但都是能跑的
lz其他的问题我也有 但感觉也只能多刷多想
回复

使用道具 举报

我的人缘0
avicii2018 2019-8-12 19:07:16 | 显示全部楼层
本楼: 👍   100% (1)
 
 
0% (0)   👎
全局: 👍   37% (23)
 
 
62% (39)    👎
我觉得 可以这样 打印一些经典题, 然后老老实实思考,在纸上手动模拟,用脑子尽量想边界,而不是不断靠提交给你找,
同时在leetcode上做题的时候先用注释写一遍逻辑流,看能不能说服自己,而且限时。
没有很快有思路的时候,一定不要慌,多观察题干和例子,大概率会有一个切入点,慢慢向外扩展。
对于一些反对很多的中低频题可以move on。

最重要的就是保持冷静,思维活跃,戒骄戒躁。祝楼主早日提高

评分

参与人数 2大米 +2 收起 理由
yyc1996 + 1 给你点个赞!
Tina2018 + 1 赞一个

查看全部评分

回复

使用道具 举报

我的人缘0
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   50% (1)
 
 
50% (1)    👎
还不够熟练 回想下高考的感觉吧 高考的数学题是不是到了想也不用想就能解的程度 那leetcode有达到这个熟练程度么?
回复

使用道具 举报

我的人缘0
 楼主| xqfly 2019-8-12 19:17:22 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   97% (43)
 
 
2% (1)    👎
看到这么多伙伴们的回帖,很是感动!

楼主今天仔细看了下Harvard CS50这种入门级编程课[由于楼主是ECE从来没上过什么CS入门课,都是靠自己自学,黑暗中摸索],其中Recursion的call stack等解释得特别好。跟我有同样困惑的可以看看。

另外,楼主也认真学习了下Loop Invariants,似乎对克服循环代码出bug有较大帮助。可以参考下Stanford的这个 http://web.stanford.edu/class/ar ... /161-section-1.pdf.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

隐私提醒:
■为防止被骚扰甚至人肉,不要公开留微信等联系方式,请以论坛私信方式发送。
■特定版块可以超级匿名:https://pay.1point3acres.com/tools/thread
■其他版块匿名方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

手机版||一亩三分地

GMT+8, 2019-12-12 18:39

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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