前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >趣味算法-01-跟着作者读《趣味算法(第2版)》下

趣味算法-01-跟着作者读《趣味算法(第2版)》下

作者头像
用户2225445
发布2022-11-12 17:10:04
3290
发布2022-11-12 17:10:04
举报
文章被收录于专栏:IT从业者张某某IT从业者张某某

14天阅读挑战赛

努力是为了不平庸~

算法学习有些时候是枯燥的,这一次,让我们先人一步,趣学算法!欢迎记录下你的那些努力时刻(算法学习知识点/算法题解/遇到的算法bug/等等),在分享的同时加深对于算法的理解,同时吸收他人的奇思妙想,一起见证技术er的成长~

系列博客:

趣味算法-01-跟着作者读《趣味算法(第2版)》上

趣味算法-02-跟着作者读《趣味算法(第2版)》下

趣味算法-03-跟着作者读《趣味算法(第2版)》-算法之美

趣味算法-04-跟着作者读《趣味算法(第2版)》-贪心算法

本文是系列博客的第2篇,是听了陈老师的报告后的记录,主要包括如何学习算法。

1.如何高效学习算法

1.1初学者如何学习算法

如何想高效的学习算法,是一个问题,因为算法的内容的很多,很多人对深度学习,推荐系统,这些更感兴趣,基于框架,仿佛容易做出效果。如果上来就接触这些算法,很多人都会陷入顶层应用调参,如果想在这里提出一个创新,就很不好下手。

对此,陈老师给出的建议是:初学者需要先从基础算法学习,宽基础,精技术。同时学好数据数据结构和算法基础知识,这点是非常重要,很多工作想提升的人,也需要重新开始学习算法。

在计算机专业领域,数据结构与算法无处不在。数据结构与算法是各大名企的面试题。同时数据结构与算法是计算机的基本内功,学好数据结构与算法,不仅具有较强的分析问题、解决问题的能力,思维能力,还可以快速学习各种新技术,拥有超强学习力。数据结构与算法这些基本功很重要,尤其是大学生,一定要重视这门课,学的时候就学扎实

1.2 学习算法的三种层次

如何衡量算法学习情况呢,可以分为如下三个层次:

1.会数据结构的基本操作和经典算法 2.会利用数据结构与算法,解决实际问题 3.熟练使用和改进数据结构,优化算法

这里的算法可以分为经典算法实用算法面试算法

一些朋友通过学习,可以基于算法完成应用开发,但由于对数据结构和算法不够了解,如果想深入一些,就很困难了。如果对于想要进入大厂的同学,建议达到熟练使用和改进数据结构,优化算法的阶段,否则竞争力不够强。

1.3 如何高效学习算法

如何才能达到第3个层次呢,陈老师给出如下方案:

针对陈老师的讲义和汇报,这里复述下:

  1. 首先看书+看视频:看书要看图解较多的入门书,要易懂,太多公式推导堆积的书,未必适合大部分算法爱好者。如果看书可以明白,就可以动手操作了。否则可以结合视频,因为视频有解题过程,并能展现问题分析过程,还能对关键算法进行理解。同时非常重要的先分析,再动手,不要上来就写,算法的分析很重要。另外书中还有具有源代码,只有伪代码的方式其实很难有直观的讲解。总结下,就是学经典,多理解
  2. 其次是解题+刷题:在基本入门之后,可以进行专项练习,比如动态规划,把这个领域的算法掌握好了,就可以,贪多嚼不烂,要不停的反思总结,分析最优算法
  3. 最后是刷题+总结:另外很重要的问题是,通过专项刷题,总结常用的算法模板(是总结,而不是靠背题),然后要灵活运用,举一反三,因为不同问题的实现算法都是不同的,不断的练习,达到快速bugfree的地步(还是很难的)

2.如何进行刷题

在对算法有基础的掌握后,刷题就很重要了,如何刷题呢,方法如下:

  1. 什么时候开始刷题:在一类算法学完后就可以刷这类的题了,如果不理解,就看书,如果书中不理解,就看题解,避免ctrl+cv大法。然后对相关题目进行刷题,比如学完贪心,就做贪心算法的题。另外需要注意的是,要先本地编译通过,然后测试用例通过再提交,避免在线多次提交,影响成绩
  2. 在哪里刷题。:老师提供的刷题网站如下: 打比赛:Vjudge,POJ,HDU,Code Forces,洛谷 找工作:LeetCode 牛客网 在线测试系统OJ(Online Judge) https://vjudge.net
  3. 提交结果类型: AC Accepted 通过 WA Wrong Answer答案错误 TLE Time Limit Exceed超时 MLE Memory Limit Exceed 超内存 OLE Output Limit Exceed超过输出限制 RE Runtime Error运行时错误 PE Presentation Error输出格式错误 CE Compile Error编译错误 通过的不同的错误,可以辅助定位刷题时遇到的代码问题
  4. 提交不通过怎么办: 提交不通过是很常见的,即使测试用例通过,提交不通过是很正常的,因为测试用例仅仅是一两组数据,而后台有大量测试数据。遇到提交不通过,首先冷静,根据错误类型分析原因。 WA答案错:冷静分析算法逻辑,易错点,特殊情况判断等TLE超时:选择的数据结构和算法是否合适?是否有死循环?
  5. 如何判断是否超时: 看题目时要看数据规模时间限制空间限制,设计算法时是否超时超限,心中有数。如果限制时间为1s,则问题规模和时间复杂度之间的关系为:
n<=11 时 O\left( n!\right)
n<=25 时 O\left( 2^{n}\right)
n<=5000 时 O\left( n^{2}\right)
n<=10^{6}时 O\left(n\log n\right)
n<=10^{7}时 O\left(n\right)
n>10^{8}时 O\left(\log n\right)

十分实用的对应关系,做算法分析与设计阶段可以特别考虑。

  1. 记录坑点: 这个坑点每个人遇到的都不一样,可以根据自己的刷题过程,进行整理记录。

3. 如何准备算法面试

如何准备算法面试:

  1. 首先这个过程是个持久战,需要1-2年的时间来积累数据结构和算法,这个时候,如果ACM铜牌之类的,就可以进大厂。如果没有竞赛,就需要现场可以快速的敲代码解决问题,想实现快速解决问题,需要1-2的积累,没有快速的办法。语言关比较快,成年人1-2月尽可入门,然后去做数据结构,做数据结构的过程中,就在用语言了。
  2. 如果有基础了,就可以进行面试准备了,花费1-3个月在leetcode进行刷题
  3. 然后就可以模拟面试了,根据经验来说,大部分的面试往往都是简单的
  4. 最后从技巧的角度来说,如果去某厂面试,还是有必要去针对这个企业,进行面试问题收集与模拟的,这样增加企业的面试通过几率。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-10-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 系列博客:
  • 1.如何高效学习算法
    • 1.1初学者如何学习算法
      • 1.2 学习算法的三种层次
        • 1.3 如何高效学习算法
        • 2.如何进行刷题
        • 3. 如何准备算法面试
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档