zoukankan      html  css  js  c++  java
  • 程序员如何走出算法舒适区,从原理层面理解算法?

      什么是舒适区?当你刷一个问题时,可能有一种问题你更了解。每次你看它,你都有一个思路。然后你在半小时内把代码汇总起来,提交代码,并通过它。然后,哇,你刷了另一个问题,你觉得很舒服。
      然而,请记住,在早期,你可以刷更多这样的练习来提高你的享受。然而,我仍然建议你慢慢跳出舒适区,做一些你不擅长的练习,并且一直坚持这样的练习。例如,我认为我的递归问题相当严重。
      然而,我非常擅长动态规划。我每次都想了很久。当我遇到这种问题时,我有点害怕,也没有信心。然而,有一段时间,我觉得我只使用动态规划问题和直接选择的话题。我连续上了40或50门课。起初,我觉得很不舒服。后来,我逐渐学会了这个套路。一个话题从两三个小时缩短到半个小时,几分钟就完成了。我觉得我不怕这类问题。
      当然,对于动态规划的学习,你也可以读我的一篇很受欢迎的文章:为什么你不能学习动态规划?告别动态规划,谈谈我的经历
      因此,我建议你必须学会跳出你的舒适区。
      我们必须学会分类和总结
      有些人认为问题越多,代码刷越好。事实上,事实并非如此。虽然leetcode有1000多个问题,但只有几种类型的问题。在刷牙的早期,我建议根据问题的类型来刷牙。例如,我整理和刷二叉树,然后链表,然后二分法,然后递归,等等。对于每种类型的问题,我都需要研究它们的常规。如果你愿意总结的话,那么leetcode问题,事实上,你用目的和选择刷了数百个问题,我认为几乎是一样的。
      我读过一本叫《程序员代码面试指南:IT 名企算法与数据结构题目最优解》的书,非常好。它是在一个主题接一个主题的基础上编写的,例如堆栈、队列、链表、二叉树、字符串等等,每个主题给出一个最优的解决方案。此外,它的主题很难,很有趣,而且非常好。如果你完成了这本书的所有主题并总结了相关的例程,你的算法肯定会有很大的改进。
      推荐一些网站来刷这个话题
      我通常用李特考德和Niuke.com来概括这个话题。我感觉很好,但是这个问题不是很难。
      在Niuke.com,我主要刷我的剑作为一个提议,但是也有一个在线的密码,但是里面的问题很少。对于Niuke.com来说,有一个非常方便的地方来刷问题,那就是一个讨论区,在这里许多大兄弟将分享他们的解决方案,而不是去百度寻找解决方案。所以当你完成后,你真的想不起来了。看别人怎么做是非常方便的。至于leetcode,大部分问题已经由政府回答,这也是一个刷问题的好网站。你可以选择其中一个或两个。
      当然,也有其他网站刷这个话题。然而,其他网站还没有被刷过,所以不是很清楚。

  • 相关阅读:
    python安装pip
    MySQL免安装版
    git仓库删除所有提交历史记录,成为一个干净的新仓库
    git地址带上密码,不用每次提交都输入密码
    virtualenv
    mac卸载python
    换源
    屏幕旋转,ViewController触发事件
    ViewController启动加载过程
    使用 symbolicatecrash转化crash日志
  • 原文地址:https://www.cnblogs.com/phploser/p/12468631.html
Copyright © 2011-2022 走看看