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

[其他] 每次刷题是不是一定要做到AC?

头像被屏蔽
提示: 作者被禁止或删除 内容自动屏蔽

上一篇:leetcode 217
下一篇:expire
全局:
本帖最后由 sheepmiemies 于 2016-8-16 06:46 编辑
burself 发表于 2016-8-15 15:40
你说的有一定道理。我也知道不少ACM OJ选手对常用算法都是倒背如流的。但我觉得对准备面试来讲,还是要找 ...

LZ你这有点偷换概念,AC,最优解,倒背如流,这几个不是一个层次的。

AC,可能只是代表你刚好做出来了,(1)你的代码可能很冗长,(2)效率可能很低,(3)再做一遍你未必做的出来。
最优解,也可能只是代表你的方法big O最优,甚至少数题只是你见过的最优,还有可以优化的点,仍然可能精简/优化代码,并且隔一段时间再做一次你未必能想到最优解。
倒背如流,看似已经学到头了,但是也有, (1)假的倒背如流,也就是你遇到这道题,比如80%可以很快写出最优解并且bug free,但是follow  up完全懵逼, (2)真正做到理解题目思路,举一反三,遇到同一类型类似的题都能很快找到答案。

做题不仅是做题,是锻炼思维和培养习惯的一个过程,也是建立正确态度的过程,在你看来很弱智或者很平常的思路,在更high level的地方很可能仍然有举足轻重的地位。

个人建议,不喜轻喷。觉得LZ的态度需要改变一下:
1. 你觉得你花30分钟,解决了这么小的一个bug,不过是才AC,你就能倒背如流了吗?或者你觉得你花30分钟把一道easy,medium的题解决得倒背如流,遇到hard也能有同样的效率?
2. 仅仅这30分钟,你能了解多少系统架构?能付诸现实吗?会不会担心变成思想的巨人?
3. 写测试的时间都省了,也就是你懒得去全面地思考各种case,你工作中也是这样的态度吗?如果这样别人怎么可能放心你去架构?
4. 同样已经工作,确实觉得回家了不是很有学习的动力,但是时间挤挤还是有的。确实不同公司加班情况不太一样,这个因人而异;但是我们现在应该是可以大量利用碎片化时间来充实自己,想想可以怎么好好利用闲暇时间才是正道,而不是鼓励自己“能学习已经很难得了”。。。有时候(没太多加班的时候)可能是自己给自己的借口,放松得心安理得。
补充两点,个人认为这两点都不太可取:
1. (推荐LZ认真想想) LC的code一般不长,大多数在30~50行之内。这么小段代码,如果连typo或者一些mismatch这样的小问题都需要检查半个小时,是不是会被怀疑在以后工作中,在庞大的架构下debug都需要更长的时间?
2. 最优解的追求,就如楼下那位所说,是否要盲目去追求最优解?
(1) 如果最优解思路很明显,还是很有必要的,毕竟明显的思路大家都很容易想出来也不会花太多时间,从竞争的角度上说,也不会比别人差得太多,还是有必要的,就不举例了。
(2) 如果最优解太巧妙,超出了自己目前的能力,思考一下就好,开拓下思路总是有好处的,但是没必要花大把时间,mark一下以后回过头来看更有效率。
(3) 不要盲目追求代码极度简洁。。。。没有必要为了简洁完全舍弃可读性。
回复

使用道具 举报

推荐
ladyM1896 2016-8-16 04:56:21 | 只看该作者
全局:
很多题目AC是不够的,好在现在LC可以看到自己代码的运行效率和别人的进行比较。如果专注于刷题进度,那么AC了以后如果运行效率基本和大家差不多的,我觉得就可以算这题pass了。

另外说点和楼上几位不太一样的吧,刷题毕竟是为了面试,所以应当以怎么让面试官认可你作为标准。我最近面了几个公司的体会就是,刷题够用就行了,有时候代码就算完成度很低,只要思路对了,面试官一样让你过,甚至评价还不错。(基于我G的电面的经验)。花太多时间追求最优不是一个很经济的做法。而且有时候题做得太顺,会让面试官觉得你无非是刷过这题,反而说你communication不行。举个例子,LC上的Stephen的代码长度基本都是最短速度最快的。仅仅是个人爱好做题没问题,但是面试的时候真的把这种代码写出来有点炫技的意思,代码不太容易读懂。确实也会看到有些人提到做得太快面试官出更难的题,直到被难倒为止。有时候面试官自己都未必对面试题很熟悉,只直到一两个解法,可能还搞不懂你写的代码。

不过楼主这个情况,首先copy paste是绝对不可取的。就我个人而言,做不出来的题目,看一下别人的思路,我也不会立刻去做,这个时候可能思路只是记忆性的,照搬别人的东西做完就忘了。我一定会做点别的题目,第二天再去做之前的题,这样可以尽量确保代码是你自己敲出来的,不是靠看别人的。
回复

使用道具 举报

🔗
RobertCheng 2016-8-13 22:17:31 | 只看该作者
全局:
白板的话不需要,但是OA得AC
回复

使用道具 举报

🔗
ryancooper 2016-8-15 01:02:04 | 只看该作者
全局:
当然要AC啊,不AC证明你的算法就是错的。所谓的笔误,本来在你写完代码自己做测试的时候就能看出来。如果你要花很长时间,往往是因为没有很好的通读自己的程序,主要你理解自己程序中的每个量的语义,然后看你的实现是否满足这些语义,很快就能检查出来的。这里可以提高你的code review的能力
回复

使用道具 举报

🔗
RobertCheng 2016-8-15 01:05:59 | 只看该作者
全局:
burself 发表于 2016-8-15 00:33
我的意思是平时做练习需不需要每次都做到AC。。。

平时练习不也是为了OA做准备吗
回复

使用道具 举报

🔗
哈哈贼 2016-8-15 01:20:41 | 只看该作者
全局:
有这些bug 就是不熟练的表现, 你觉得很浪费时间有时间对于面试官来说就是致命的。等你慢慢debug多了,等你熟练了,有些bug自然就没了。再说你不AC你怎么知道你的算法是对的?
你现在花半个小时修一个bug觉得很浪费时间不去ac。有可能等你上班以后就要花两三天的时间修一个更小的bug?你也不修了吗?
回复

使用道具 举报

🔗
xietao0221 2016-8-15 16:10:26 | 只看该作者
全局:
肯定得AC啊,其实leetcode也不一定每道题的test case都涵盖了所有情况,如果这都不能AC的话,就证明算法一定有问题。就算是算法没有问题,那些笔误也会让面试官觉得你的代码能力有问题。写代码不可能一次通过,每天的debug也是在给自己增长经验。
回复

使用道具 举报

🔗
justin 2016-8-15 17:23:22 | 只看该作者
全局:
必须得AC。
不AC的话不就相当于你自己安慰自己说你做对了,其实你可能主体思路都没写对呢。

另外,关于debug的问题。建议用有debugger的编辑器,这样的话可以设置断点便于查找问题。比如直接追踪某一变量的value变化。每次看到别人用print来debug C++我就觉得心好累。。。
回复

使用道具 举报

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

本版积分规则

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