V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
linxiaoziruo
V2EX  ›  程序员

算法,天启

  •  
  •   linxiaoziruo · 2020-07-30 10:30:15 +08:00 · 6344 次点击
    这是一个创建于 1556 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近一直在刷算法题,感觉和高考数学试卷最后一题类似。

    你掌握了解题的所有基本知识(如果是数学,基本知识就是大纲里的各种定理,如果是算法,基本知识就是基础的几个算法思想,比如递归、贪心,回溯,分支限界等),但就是无法发现解题的那个关键步骤和潜藏的那个数字规律。

    而发现这个关键点全靠观察和思维敏捷度,没办法说通过某一个固定线索或者思想来顺理成章的提取它,我把发现这个关键点的步骤称之为天启。

    这难道就是每个人资质上的区别?这种感觉很痛苦!

    有没有大佬出来指点指点我。

    39 条回复    2020-07-31 17:12:09 +08:00
    Jooooooooo
        1
    Jooooooooo  
       2020-07-30 10:46:49 +08:00   ❤️ 3
    聪明人做这种题真的很快

    你在想这里面绕来绕去逻辑的时候, 人家已经把正确答案写出来了

    接受自己的智商平平就好了, 智商就是天生的东西, 说白了是运气好
    javapythongo
        2
    javapythongo  
       2020-07-30 10:47:31 +08:00   ❤️ 2
    感觉普通人刷算法题就是找规律积累经验
    TomatoYuyuko
        3
    TomatoYuyuko  
       2020-07-30 10:48:54 +08:00
    无他
    linxiaoziruo
        4
    linxiaoziruo  
    OP
       2020-07-30 11:23:56 +08:00
    @javapythongo 是的,我就是在积累经验,争取能提取出一般性的规律,越刷越觉得除了一些基本思想,大部分都是靠灵感,很痛苦。
    azh7138m
        5
    azh7138m  
       2020-07-30 11:30:26 +08:00
    智商就是有差距嘛

    我记得计蒜客的活动,4 题( 2 3 4 一样的题目,只是数据范围不一样),看到初中生 30 分钟,AK
    太惨了,我这种垃圾就只配搬砖
    Weixiao0725
        6
    Weixiao0725  
       2020-07-30 11:32:01 +08:00
    得达到一定的量的时候,才能有所顿悟。所谓量变->质变,多刷题,培养你写程序的思维还是有好处的。
    lithbitren
        7
    lithbitren  
       2020-07-30 11:32:58 +08:00
    数据结构和搜索相关的一般理解了就差不多了,代码模板都特简单,动归贪心数学相关的没做过基本就是不会,基本已经半放弃了
    coderluan
        8
    coderluan  
       2020-07-30 11:33:09 +08:00
    简单题有技巧的, 核心就是分类, 类型其实不多, 相同类型的思路也都相似, 所以存在刷题的可能, 智商差距还是能靠努力来弥补, 不过困难题就不行了, 但是对普通人影响也没那么大.
    ericgui
        9
    ericgui  
       2020-07-30 11:36:30 +08:00   ❤️ 1
    首先,容我推广一波, 我的 leetcode java 版视频: https://space.bilibili.com/9099840/channel/detail?cid=89640

    其次,leetcode,你就是多投入时间,多练习,远没到考验你天赋的程度
    levelworm
        10
    levelworm  
       2020-07-30 12:31:23 +08:00 via Android
    普通人只能靠多堆来获取灵感,做多了你就可以穷举那关键的一步了,前提是不是特别新的东西。
    laqow
        11
    laqow  
       2020-07-30 12:34:53 +08:00 via Android
    为什么不试着用算法理解这个“天启”是什么
    chuyang
        12
    chuyang  
       2020-07-30 12:36:40 +08:00 via Android
    我也很困惑
    hakono
        13
    hakono  
       2020-07-30 12:39:57 +08:00
    聪明的人不代表不用刷题,只是能在比普通人少刷非常多题的情况下,做到运用自如或者独自推导出解题思路
    有人学了各种定理,就是能在只做了几道题目熟悉了定理后,就轻松把各种定理排列组合玩出花来解题
    但普通人没有这种资质也就只能扎扎实实刷题积累经验了。(但是要知道不是为了应试的话,不能为了刷题而刷题啊,而是为了熟练运用知识而刷题。有人就是能不刷题学了知识就能拿来用,有人就不能。没办法的事情)
    20015jjw
        14
    20015jjw  
       2020-07-30 12:47:38 +08:00 via Android
    @ericgui
    天赋是真的有
    我大学的助教
    0 刷题经验
    只投过 Google 一家
    实习 转正面试都全过
    编辑器都不用高亮的...
    aguesuka
        15
    aguesuka  
       2020-07-30 12:50:18 +08:00 via Android
    可以去看一下对象排序算法时间复杂度为什么是 O(nlogn)的证明,然后养成一个遇到算法题先计算理论最小时间复杂度的习惯。当然有些可能不好计算,但是在计算的过程中把问题抽象对于解决的帮助也很大,可以避免走很多弯路。
    wangyzj
        16
    wangyzj  
       2020-07-30 13:02:11 +08:00
    其实几乎所有题都有技巧
    再变态的题目都是一个简单的变换
    是可以分类的

    前提是你得首先自己理解好,不能死记硬背

    困难的不是做出来
    是用最好的方法做出来
    lechain
        17
    lechain  
       2020-07-30 13:10:04 +08:00 via Android
    算法的本质是数学,解题第一步是数学建模,解题快不快取决于数学好不好,而数学是可以训练的,并不是智商决定一切(不过有一说一,数学天赋好的人一般人是真的没法比)
    tangyikejun
        18
    tangyikejun  
       2020-07-30 13:32:10 +08:00   ❤️ 1
    推荐一本书 《怎样解题》
    mathzhaoliang
        19
    mathzhaoliang  
       2020-07-30 13:33:37 +08:00
    leetcode 里面没有多少数学,只有套路,你习惯了那个套路就行。
    现在论坛里面说到算法言必称 leetcode,这不是好现象。
    ericgui
        20
    ericgui  
       2020-07-30 13:40:29 +08:00
    @20015jjw 这个肯定不能比,你要和自己比,leetcode 绝对不会超过你的智商上限
    20015jjw
        21
    20015jjw  
       2020-07-30 13:41:36 +08:00 via Android
    @ericgui 别吧 有的题不看答案真的不会...
    ericgui
        22
    ericgui  
       2020-07-30 13:51:42 +08:00
    @20015jjw 一开始真的需要看答案的,我卡在 38 题,easy 题,我连答案都看不懂,非常灰心,很受打击,甚至觉得自己永远成为不了高级程序员,停了 11 个月。然后又开始刷。刷到第三遍,才终于明白,哦,原来是动态规划可以解,比较基础的一道动态规划题。

    所以,还是要多投入时间,掌握套路。
    onleaks
        23
    onleaks  
       2020-07-30 14:03:56 +08:00
    天启的话我感觉还是要多做,在通过自己的经验突然某一天就发现原来是这么写的
    20015jjw
        24
    20015jjw  
       2020-07-30 14:09:02 +08:00 via Android
    @ericgui
    ...动态规划算法课会学 这些都是基本的东西 等你做到 Google 的 hard 题你就理解我的意思了...
    ericgui
        25
    ericgui  
       2020-07-30 14:12:24 +08:00
    @20015jjw 我又不是 CS 本科,没学过

    我学医,改行,还是很艰难的


    本贴的发帖人,估计也八成是改行的

    不能假设所有人都学上过计算机本科
    linxiaoziruo
        26
    linxiaoziruo  
    OP
       2020-07-30 14:21:05 +08:00
    @ericgui 兄弟,我软件工程本科毕业的。
    linxiaoziruo
        27
    linxiaoziruo  
    OP
       2020-07-30 14:22:16 +08:00
    看到有人说 leetcode 的程序应该不会超过智商的上限,我就安心多了。再加把劲!
    20015jjw
        28
    20015jjw  
       2020-07-30 14:30:59 +08:00
    @ericgui
    premed/med 才是真的大佬呀
    我只是想说 有的题是真的难... 不看答案靠自己智商真的做不出 /想不到最优解
    DEVN
        29
    DEVN  
       2020-07-30 14:40:47 +08:00
    没有天才这么一说。

    每个人都是平等的。

    唯一不平等的是努力。

    你没他努力凭什么比他懂得多?
    Codelike
        30
    Codelike  
       2020-07-30 14:41:46 +08:00   ❤️ 1
    思考过这类问题。以数学为例,出题人出题由答案出发,推出问题条件。假设里面用到了 3 个定理,4 个常用变形和 1 个不常用的变形。 在学习同样的解题必需知识后,有些人能看到 3 步,有些人能看到 5 步,有些人能看到 8 步,有些人能看到 11 步。所以有些人能一眼看到答案。有些人做半天,尝试了各种方法可能才能做出来。

    吾等大多常人,只能看到 3 步。想要解 11 步的题目,就需要做类似的题,形成定式思维,减少思考步数,提高解题速度。这个过程就是刷题。

    至于天启,感觉还是臆想出来的,就像迷宫一样,只有选择了正确的路才能成功走到终点。资质当然有区别,陶哲轩 13 岁获得国际数学奥林匹克竞赛数学金牌,但就算是他也没办法超脱人类的限制。假设他能看到 20 步,遇到 200 步的题目,也会感到智力的不足。

    认识自己的平庸,并承认它,原谅自己。立足平庸,多学习高效的学习方法,尽量提高自己的刷题效率,以求对自己的超越。
    justin2018
        31
    justin2018  
       2020-07-30 14:43:51 +08:00   ❤️ 2
    当年考试的时候 我只会背题和套题~ 😢

    直到有一天放学和别人打架~ 被别人把头按着往墙上撞~ 晚上回去做题 突然觉得以前好难的题 一下子变得简单了~

    难道是开窍了 ~~~ 感觉很玄学~
    MeatIndustry
        32
    MeatIndustry  
       2020-07-30 14:45:45 +08:00 via iPhone
    和楼主共鸣了。共勉,加油
    longalong
        33
    longalong  
       2020-07-30 17:58:08 +08:00
    @justin2018 窝草,还可以这样,好想去打架
    fantasua
        34
    fantasua  
       2020-07-30 19:09:48 +08:00
    @tangyikejun 高中的时候看了这本书,感觉受益匪浅
    yangbonis
        35
    yangbonis  
       2020-07-30 19:29:22 +08:00 via iPhone
    可以把自己用的 api 算下时间复杂度,刷题挺无聊的
    ChaYedan666
        36
    ChaYedan666  
       2020-07-30 20:54:58 +08:00
    多刷就好了,作为 EE 本科生,DS 连图都不知道的,期末考试老师抬一手给过的人。现在刷了差不多一百五左右,简单和中等,困难(假困难)题几乎都能动手做了。无非就是刷一道题之后要知道为什么这么想,后面读完题几乎就有思路了
    ericgui
        37
    ericgui  
       2020-07-31 00:52:35 +08:00 via Android
    @ChaYedan666 正解
    lithbitren
        38
    lithbitren  
       2020-07-31 10:33:00 +08:00
    做了一两百题就觉得觉得没问题的还是太年轻,我做了一千题,遇到没做过的贪心或 DP 也不敢保证在短时间能做出来,数学题没见过的一般都是战略性放弃,没时间也没动力去复习数论、离散数学和计算几何的知识点了,但数据结构相关的,只要确定了数据规模和复杂度,啪啪啪几分钟基本就可以 AC 了。
    quietnight
        39
    quietnight  
       2020-07-31 17:12:09 +08:00
    你这个体验很不错,我从初中开始参加数学奥赛,通过和队友比较发现一个事实。大家的题库积累量是相当,熟悉的题目在排除粗心等因素拉不开差距,真正决定名次的是需要快速发现数学规律的技巧题,这就是天赋的差距。据我观察,拥有这种天赋的同学在数学领域已经有所建树了,没有得比如我就搞 cs 了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1239 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 18:33 · PVG 02:33 · LAX 11:33 · JFK 14:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.