V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
supremacyxxxxx
V2EX  ›  程序员

算法题越做越没信心

  •  
  •   supremacyxxxxx · 2020-05-11 13:27:28 +08:00 · 4735 次点击
    这是一个创建于 1683 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近每天都在刷算法题,每天一两道,已经刷了接近一个月了,现在做一些题还是很多做不来,看题解也觉得不太好理解,总之就没啥正反馈,越做越不耐烦。唉,这到时候秋招可咋整。想问问各位有啥好的刷算法题的建议吗

    24 条回复    2020-05-27 11:40:05 +08:00
    boshan927
        1
    boshan927  
       2020-05-11 13:40:02 +08:00 via iPhone
    正常,别急,继续做。
    freakxx
        2
    freakxx  
       2020-05-11 13:42:21 +08:00
    按类别去刷,效率比较高
    没思路直接看题解,再自己整理思路继续做
    还是撸不动就去看看一些别人讲解,或者补下知识

    心态的话
    - 当成是乐趣去做,没乐趣别勉强,容易整吐
    - 硬上就当是面向工资编程
    Nich0la5
        3
    Nich0la5  
       2020-05-11 13:47:39 +08:00 via Android
    先把算法相关的书看一遍呗,硬上太痛苦了
    paoqi2048
        4
    paoqi2048  
       2020-05-11 13:50:20 +08:00
    这个急不来
    hahaayaoyaoyao
        5
    hahaayaoyaoyao  
       2020-05-11 13:51:48 +08:00 via Android
    什么难度,开始不要刷困难的
    krystal9527
        6
    krystal9527  
       2020-05-11 15:14:04 +08:00
    slow slow come
    Simle100
        7
    Simle100  
       2020-05-11 15:18:35 +08:00
    实在想不出来的题目,可以跳出去呀。
    WhoMercy
        8
    WhoMercy  
       2020-05-11 15:20:49 +08:00
    才一个月就不行了吗,我刷了一年都感觉懵懵懂懂。

    要想速成,就可能会比较痛苦。
    一天刷五道、八道,十分钟没思路就看高票题解,隔几天再来重来一遍,集中高频题型反复刷。
    背思路、背套路。
    darksword21
        9
    darksword21  
       2020-05-11 15:21:08 +08:00
    正常,我是按类别,做一些就会发现一些套路之类的,比如双指针这类的
    jones2000
        10
    jones2000  
       2020-05-11 15:50:41 +08:00
    刷题都是纸上谈兵。 关键还是要代码经验,就算你不知道做什么,你直接在 git 上找几个好的开源的插件, 自己根据自己的理解重写一遍都比纯做题的好。
    fkdog
        11
    fkdog  
       2020-05-11 16:26:26 +08:00
    先回忆一下自己以前上学时候的成绩如何?

    算法题和物理数学刷题道理是一样的。
    能通过刷题提升的往往是一类能举一反三、善于归纳总结的人。

    如果自己没有这方面能力,无脑刷题的话怕是效率不会很高。
    archxm
        12
    archxm  
       2020-05-11 17:40:04 +08:00
    以前,互联网还不发达的时候,一些大佬会把自己想到的代码,好好地修饰优化一下,发到某本杂志上,每年,都会对这些算法进行评选,于是有了 ACM 。后来,互联网越来越发达,大家都去 csdn 啊,oschina 啊,这种地方讨论问题,然后那些杂志就越来越不行了。所以,算法本质上到底是啥?就是把一些常用的程序好好整理一下。
    如果网上那些算法题,理解起来很费劲,你完全不用去做,浪费时间。
    fishCatcher
        13
    fishCatcher  
       2020-05-11 18:55:17 +08:00 via iPhone   ❤️ 1
    正常,当你做了三四百之后会发现还是有很多 medium 做不出来,然后就开始自我怀疑。最后不得不总结出人脑工作原理:万物基于背诵。
    chevalier
        14
    chevalier  
       2020-05-11 19:07:58 +08:00   ❤️ 1
    楼上说的对,本质上跟高考数学题差不多,对于普通人来说,这个题目不会做,原因只有一个,之前没见过这类题
    hehheh
        15
    hehheh  
       2020-05-11 19:17:44 +08:00
    其实刷到 300 左右就能把大部分类型的题都刷过了,再往后基本都能写出来,偶尔有时候会 TLE
    zooo
        16
    zooo  
       2020-05-11 19:22:00 +08:00
    我刷了 20 到也能去面试。。
    CoderGeek
        17
    CoderGeek  
       2020-05-11 19:22:35 +08:00
    这东西 写的多了就会了 像考试 233
    yazoox
        18
    yazoox  
       2020-05-11 20:28:29 +08:00
    @jones2000 “开源的插件”,这个是什么意思?没看明白。
    V2todd
        19
    V2todd  
       2020-05-11 20:47:42 +08:00 via Android
    力扣 700 题,其他地方未统计,长年 AC 力扣周赛前三题,动态规划太难了,去年 9 月份两数之和都不会的人,以上
    buffzty
        20
    buffzty  
       2020-05-12 09:56:21 +08:00   ❤️ 1
    你这个是正常的,创造那些算法的人花了几年几十年优化出的算法,你要是一看题目就能就解出来那你就是当代牛顿了.
    我一般是先了解这个算法的概念. 然后尝试去写.写不出来看答案. 看懂答案后 再用手写一遍. 写同一类型的题目 写几次你就熟了. 我感觉死记硬背挺重要的
    jones2000
        21
    jones2000  
       2020-05-12 14:15:08 +08:00
    @yazoox 就比如说吧, 你是学前端的,哪你可以看下 esprima 这类语法解析器的代码(这些代码量不大)+编译原理的书,然后自己尝试写一个, 在你动手写的过程中,就有遇到很多问题,一个一个解决,这比你刷题要来的有用。
    MongkeMary
        22
    MongkeMary  
       2020-05-27 06:47:06 +08:00
    哈哈,我也曾经有同感啊。我是今年二月开始刷的,到现在刷了 500 多吧。中间也有一段时间特别没信心,觉得啥题都不会,但是慢慢熬过去了那个瓶颈期,后面就越来越好了。

    我自己总结,不会做题有两种情况:
    1. 题目背后的知识点不会
    2. 知识点会,但是没有看出来这道题可以用这个知识点做


    对于第一种情况,对于这两种情况,最好的方法都是“专题训练”。我是这么做专题训练的:

    1. 每次针对性的选择一个知识点,比如我之前最怕的单调栈 /队列,先把背后的原理搞懂。这个阶段可以借助于教材,教程,博客,以及 LeetCode 的讨论区总结(这个是一个被低估的宝藏,里面很多人做了非常不错的总结)

    2. 搞懂知识点后:找一个非常典型的题目,一定是那种一眼就看出考察知识点的题目来做。这个题目要精做,从最开始的简单的方法 brutal force 开始,一点点优化,最后用到刚学的知识点(单调栈)。

    3. 然后最重要的来了,不要做完之后就跑了去下一题了。一定要仔细揣摩为什么这道题可以使用这个方法,用其他的方法不行吗?这个方法有什么独特的优势吗?这种优势有什么条件吗?比如题目如何改改之后,这个方法还是最好的吗?这些问题一定要想清楚,才能从根本上理解这个算法。

    4. 再然后就是解决问题二了。如何办吗?还是“专题训练”。找大量类似的题目,先从容易识别的入手,慢慢过渡到不是那么容易的,再到隐藏很深的题目。看看都是什么情况下可以转化为此方法。

    经过这几个阶段的练习,这个算法才算是基本算是掌握了。当然,人脑的特点就是,忘得快。所以,即使总结心得体会,后面没事常翻翻。常常是你想了半天也回忆不起来的东西,看看当时的笔记就瞬间清楚了。

    希望我的经验对你有帮助,加油💪🏻
    MongkeMary
        23
    MongkeMary  
       2020-05-27 06:56:56 +08:00
    @MongkeMary 还有一点忘记说了,“专题训练” 既是内容上的,更是时间上的。

    内容上的,就是上个帖子,把类似的题目集中学习、揣摩、训练。这是按照 “知识点” 来划分,而不是大致的“类比”,比如 array, string... 这样的分类过于宽泛,很容易在练习过程中碰到不同的知识点,导致自信心不断受挫,本来可以学会的也搞不定了。集中火力仅供一个知识点,不仅敌人相对可控,自己也会有很多的信心,比较容易坚持下去。

    时间上的“专题训练”是指,要抽出一定的时间,排除一切干扰,专心做这个事情。我们从小的学习就存在一个误区,所谓的每天一个单词,几年后你就是专八的词汇量。实际上,这样你永远也学不好英语。学习心得只是,一定要集中时间精力,在最短的时间内突破,然后你可以“每天一道题”这样保持手感。但是开始学习阶段,每天一道题绝对是大忌。

    说到底,就是 “集中优势兵力,歼灭敌人有生力量”, 因为 “伤其十指不如断其一指”。切忌搞成了 “添油战术”。
    supremacyxxxxx
        24
    supremacyxxxxx  
    OP
       2020-05-27 11:40:05 +08:00 via Android
    这里统一回复一下,感谢各位给出的建议!
    也希望自己能熬过这段时间。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1445 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:16 · PVG 01:16 · LAX 09:16 · JFK 12:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.