最近一直在刷算法题,感觉和高考数学试卷最后一题类似。
你掌握了解题的所有基本知识(如果是数学,基本知识就是大纲里的各种定理,如果是算法,基本知识就是基础的几个算法思想,比如递归、贪心,回溯,分支限界等),但就是无法发现解题的那个关键步骤和潜藏的那个数字规律。
而发现这个关键点全靠观察和思维敏捷度,没办法说通过某一个固定线索或者思想来顺理成章的提取它,我把发现这个关键点的步骤称之为天启。
这难道就是每个人资质上的区别?这种感觉很痛苦!
有没有大佬出来指点指点我。
1
Jooooooooo 2020-07-30 10:46:49 +08:00 3
聪明人做这种题真的很快
你在想这里面绕来绕去逻辑的时候, 人家已经把正确答案写出来了 接受自己的智商平平就好了, 智商就是天生的东西, 说白了是运气好 |
2
javapythongo 2020-07-30 10:47:31 +08:00 2
感觉普通人刷算法题就是找规律积累经验
|
3
TomatoYuyuko 2020-07-30 10:48:54 +08:00
无他
|
4
linxiaoziruo OP @javapythongo 是的,我就是在积累经验,争取能提取出一般性的规律,越刷越觉得除了一些基本思想,大部分都是靠灵感,很痛苦。
|
5
azh7138m 2020-07-30 11:30:26 +08:00
智商就是有差距嘛
我记得计蒜客的活动,4 题( 2 3 4 一样的题目,只是数据范围不一样),看到初中生 30 分钟,AK 太惨了,我这种垃圾就只配搬砖 |
6
Weixiao0725 2020-07-30 11:32:01 +08:00
得达到一定的量的时候,才能有所顿悟。所谓量变->质变,多刷题,培养你写程序的思维还是有好处的。
|
7
lithbitren 2020-07-30 11:32:58 +08:00
数据结构和搜索相关的一般理解了就差不多了,代码模板都特简单,动归贪心数学相关的没做过基本就是不会,基本已经半放弃了
|
8
coderluan 2020-07-30 11:33:09 +08:00
简单题有技巧的, 核心就是分类, 类型其实不多, 相同类型的思路也都相似, 所以存在刷题的可能, 智商差距还是能靠努力来弥补, 不过困难题就不行了, 但是对普通人影响也没那么大.
|
9
ericgui 2020-07-30 11:36:30 +08:00 1
首先,容我推广一波, 我的 leetcode java 版视频: https://space.bilibili.com/9099840/channel/detail?cid=89640
其次,leetcode,你就是多投入时间,多练习,远没到考验你天赋的程度 |
10
levelworm 2020-07-30 12:31:23 +08:00 via Android
普通人只能靠多堆来获取灵感,做多了你就可以穷举那关键的一步了,前提是不是特别新的东西。
|
11
laqow 2020-07-30 12:34:53 +08:00 via Android
为什么不试着用算法理解这个“天启”是什么
|
12
chuyang 2020-07-30 12:36:40 +08:00 via Android
我也很困惑
|
13
hakono 2020-07-30 12:39:57 +08:00
聪明的人不代表不用刷题,只是能在比普通人少刷非常多题的情况下,做到运用自如或者独自推导出解题思路
有人学了各种定理,就是能在只做了几道题目熟悉了定理后,就轻松把各种定理排列组合玩出花来解题 但普通人没有这种资质也就只能扎扎实实刷题积累经验了。(但是要知道不是为了应试的话,不能为了刷题而刷题啊,而是为了熟练运用知识而刷题。有人就是能不刷题学了知识就能拿来用,有人就不能。没办法的事情) |
14
20015jjw 2020-07-30 12:47:38 +08:00 via Android
|
15
aguesuka 2020-07-30 12:50:18 +08:00 via Android
可以去看一下对象排序算法时间复杂度为什么是 O(nlogn)的证明,然后养成一个遇到算法题先计算理论最小时间复杂度的习惯。当然有些可能不好计算,但是在计算的过程中把问题抽象对于解决的帮助也很大,可以避免走很多弯路。
|
16
wangyzj 2020-07-30 13:02:11 +08:00
其实几乎所有题都有技巧
再变态的题目都是一个简单的变换 是可以分类的 前提是你得首先自己理解好,不能死记硬背 困难的不是做出来 是用最好的方法做出来 |
17
lechain 2020-07-30 13:10:04 +08:00 via Android
算法的本质是数学,解题第一步是数学建模,解题快不快取决于数学好不好,而数学是可以训练的,并不是智商决定一切(不过有一说一,数学天赋好的人一般人是真的没法比)
|
18
tangyikejun 2020-07-30 13:32:10 +08:00 1
推荐一本书 《怎样解题》
|
19
mathzhaoliang 2020-07-30 13:33:37 +08:00
leetcode 里面没有多少数学,只有套路,你习惯了那个套路就行。
现在论坛里面说到算法言必称 leetcode,这不是好现象。 |
22
ericgui 2020-07-30 13:51:42 +08:00
@20015jjw 一开始真的需要看答案的,我卡在 38 题,easy 题,我连答案都看不懂,非常灰心,很受打击,甚至觉得自己永远成为不了高级程序员,停了 11 个月。然后又开始刷。刷到第三遍,才终于明白,哦,原来是动态规划可以解,比较基础的一道动态规划题。
所以,还是要多投入时间,掌握套路。 |
23
onleaks 2020-07-30 14:03:56 +08:00
天启的话我感觉还是要多做,在通过自己的经验突然某一天就发现原来是这么写的
|
24
20015jjw 2020-07-30 14:09:02 +08:00 via Android
@ericgui
...动态规划算法课会学 这些都是基本的东西 等你做到 Google 的 hard 题你就理解我的意思了... |
25
ericgui 2020-07-30 14:12:24 +08:00
|
26
linxiaoziruo OP @ericgui 兄弟,我软件工程本科毕业的。
|
27
linxiaoziruo OP 看到有人说 leetcode 的程序应该不会超过智商的上限,我就安心多了。再加把劲!
|
28
20015jjw 2020-07-30 14:30:59 +08:00
|
29
DEVN 2020-07-30 14:40:47 +08:00
没有天才这么一说。
每个人都是平等的。 唯一不平等的是努力。 你没他努力凭什么比他懂得多? |
30
Codelike 2020-07-30 14:41:46 +08:00 1
思考过这类问题。以数学为例,出题人出题由答案出发,推出问题条件。假设里面用到了 3 个定理,4 个常用变形和 1 个不常用的变形。 在学习同样的解题必需知识后,有些人能看到 3 步,有些人能看到 5 步,有些人能看到 8 步,有些人能看到 11 步。所以有些人能一眼看到答案。有些人做半天,尝试了各种方法可能才能做出来。
吾等大多常人,只能看到 3 步。想要解 11 步的题目,就需要做类似的题,形成定式思维,减少思考步数,提高解题速度。这个过程就是刷题。 至于天启,感觉还是臆想出来的,就像迷宫一样,只有选择了正确的路才能成功走到终点。资质当然有区别,陶哲轩 13 岁获得国际数学奥林匹克竞赛数学金牌,但就算是他也没办法超脱人类的限制。假设他能看到 20 步,遇到 200 步的题目,也会感到智力的不足。 认识自己的平庸,并承认它,原谅自己。立足平庸,多学习高效的学习方法,尽量提高自己的刷题效率,以求对自己的超越。 |
31
justin2018 2020-07-30 14:43:51 +08:00 2
当年考试的时候 我只会背题和套题~ 😢
直到有一天放学和别人打架~ 被别人把头按着往墙上撞~ 晚上回去做题 突然觉得以前好难的题 一下子变得简单了~ 难道是开窍了 ~~~ 感觉很玄学~ |
32
MeatIndustry 2020-07-30 14:45:45 +08:00 via iPhone
和楼主共鸣了。共勉,加油
|
33
longalong 2020-07-30 17:58:08 +08:00
@justin2018 窝草,还可以这样,好想去打架
|
34
fantasua 2020-07-30 19:09:48 +08:00
@tangyikejun 高中的时候看了这本书,感觉受益匪浅
|
35
yangbonis 2020-07-30 19:29:22 +08:00 via iPhone
可以把自己用的 api 算下时间复杂度,刷题挺无聊的
|
36
ChaYedan666 2020-07-30 20:54:58 +08:00
多刷就好了,作为 EE 本科生,DS 连图都不知道的,期末考试老师抬一手给过的人。现在刷了差不多一百五左右,简单和中等,困难(假困难)题几乎都能动手做了。无非就是刷一道题之后要知道为什么这么想,后面读完题几乎就有思路了
|
37
ericgui 2020-07-31 00:52:35 +08:00 via Android
@ChaYedan666 正解
|
38
lithbitren 2020-07-31 10:33:00 +08:00
做了一两百题就觉得觉得没问题的还是太年轻,我做了一千题,遇到没做过的贪心或 DP 也不敢保证在短时间能做出来,数学题没见过的一般都是战略性放弃,没时间也没动力去复习数论、离散数学和计算几何的知识点了,但数据结构相关的,只要确定了数据规模和复杂度,啪啪啪几分钟基本就可以 AC 了。
|
39
quietnight 2020-07-31 17:12:09 +08:00
你这个体验很不错,我从初中开始参加数学奥赛,通过和队友比较发现一个事实。大家的题库积累量是相当,熟悉的题目在排除粗心等因素拉不开差距,真正决定名次的是需要快速发现数学规律的技巧题,这就是天赋的差距。据我观察,拥有这种天赋的同学在数学领域已经有所建树了,没有得比如我就搞 cs 了。
|