编玩边学

>

资讯中心

>

少儿编程

> 正文

怎样学算法?

2019-09-06 来源:九章算法

学习算法,不要一上来就开始啃《算法导论》,毕竟这本书并不适合新手学习,如果你之前的算法基础比较薄弱,只会一直陷在“拿起来又放下”的循环里。可以怎么入门呢?建议还是看书+实战,实战当然也不是说要去肝ACM或者是topcoder什么的。


算法,其实可以分为三种。算法、面试算法、竞赛算法。


算法,也就是算法本身,推荐一些书籍。

1.入门系列:

 《算法图解》:“像小说一样有趣的算法入门书”,主打“图解”,通俗易懂

《大话数据结构》:把理论讲得有趣不枯燥;每个数据结构和算法,作者都结合了生活中的例子,能让你有非常直观的感受。

 

2.教科书系列:

 《数据结构与算法分析》:很多大学都拿它当作教材,非常系统、全面、严谨,适合掌握了至少一门编程语言的同学。作者也很贴心,这本书有三种语言的版本:《数据结构与算法分析: C语言描述》《数据结构与算法分析: C++描述》《数据结构与算法分析: Java语言描述》。

 

3.进阶之旅:

 《算法导论》:有了一定基础之后,就可以开始啃这本大部头了。

 

4.扩展阅读:

 《算法之美》:算法科普,从生活中的各种问题说起:租房、谈恋爱、老虎机、拍电影、面试、买彩票、各种排序、找停车位、寻找新药、临床试验、奥巴马拉赞助、预估电影票房等等,非常生活化,可以作为补充阅读。《算法帝国》:同样是科普类书籍,并无涉及算法的原理与实现细节,也可以作为补充阅读。

 

5.殿堂级 

《计算机程序设计艺术》:包含很多卷,深度、广度、系统性、全面性是其他所有数据结构和算法书籍都所无法相比。可以当做一种挑战

 

竞赛算法

算法学习最好由浅入深,先了解算法思维,再去理解实际应用;当逐步全面的掌握相关知识体系,有一定实践经验后,可以去参加一些竞赛提升自己的算法能力。竞赛算法是比较锻炼人的,对于竞赛来说,每道题对输入参数和样本量的要求都非常明确,包括对空间的限制和运行时间的限制也规定的非常明确。

每一个竞赛选手都非常熟练怎么根据这些提前给好的限制,反推出自己需要实现一个什么样复杂度的解法才能通过。所以对思维和逻辑上的锻炼是非常有效的。

 

一些比较常见的经典算法题目:

数学:尾部的零、斐波纳契数列、x的平方根、大整数乘法、骰子求和、最多有多少个点在一条直线上、超级丑数

比特位操作:将整数A转换为B更新二进制位、二进制表示、O(1)时间检测2的幂次、二进制中有多少个1

动态规划:编辑距离正则表达式匹配、交叉字符串、乘积最大子序列、二叉树中的最大路径和不同的路径、通配符匹配

 堆:滑动窗口的中位数数据流中位数、最高频的K个单词、接雨水、堆化、排序矩阵中的从小到大第k个数

 二叉树:二叉树中序遍历二叉树的序列化和反序列化、子树、最近公共祖先、二叉树的层次遍历、将二叉树拆成链表、在二叉查找树中插入节点

 二分法:经典二分查找问题二分查找、两数组的交、区间最小数、寻找旋转排序数组中的最小值、搜索排序区间、寻找峰值

分治法:快速幂两个排序数组的中位数、合并K个排序链表

哈希表:变形词子串哈希函数、短网址、复制带随机指针的链表、最小子串覆盖

矩阵:搜索二维矩阵旋转图像、岛屿的个数、螺旋矩阵

宽度优先搜索:克隆图被围绕的区域、拓扑排序、单词接龙

链表:实现一个链表的反转链表求和II、删除链表中的元素、LRU缓存策略、合并两个排序链表、两个链表的交叉、翻转链表II、复制带随机指针的链表、带环链表

枚举法:统计数字名人确认、最长连续上升子序列、最大子数组差、最长公共前缀

排序:快排摆动排序、最大间距、最接近零的子数组和、最大数、四数之和、数组划分、第K大元素、排颜色

深度优先搜索:N皇后问题图是否是树、带重复元素的排列、分割回文串

数组:数组划分逆序对、合并区间、搜索旋转排序数组、最大子数组、删除排序数组中的重复数字、第二大的数组、先递增后递减数组中的最大值、两数和-输入的数据是有序的、两个排序数组的中位数、在大数组中查找、颜色分类、合并排序数组、无序数组K小元素、中位数、奇偶分割数组

贪心:主元素寻找缺失的数、买卖股票最佳时机、加油站、删除数字、落单的数、最大子数组差

线段树:线段树查询线段树的构造、线段树的修改、区间求和、统计比给定整数小的数的个数

栈:带最小值操作的栈用栈实现队列、有效的括号序列、简化路径

整数:反转整数将整数、A转换为B、整数排序

字符串处理:罗马数字转整数回文数、乱序字符串、有效回文串、翻转字符串、最长无重复字符的子串、字符串压缩、比较字符串编辑距离II


所以如果您想报名少儿编程培训课程,就请点击“少儿编程报名”,填写信息,并领取5G的免费试听课程和学习资料。  

作者:九章算法

链接:https://www.zhihu.com/question/19981544/answer/747832788

来源:知乎

关键词阅读

学习算法

版权及免责声明

1、"编玩边学"上的内容,包括文章、资料、资讯等,本网注明"来源:编玩边学"的,其版权均为"编玩边学"或深圳市编玩边学教育科技有限公司所有,任何公司、媒体、网站或个人未经授权不得转载、链接、转贴或以其他方式使用。已经得到"编玩边学"许可的媒体、网站,在使用时必须注明"来源:编玩边学",违者本网站将依法追究责任。

2、"编玩边学" 未注明"来源:编玩边学"的文章、资料、资讯等均为转载,本网站转载出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如其他媒体、网站或个人从本网站下载使用,必须保留本网站注明的"稿件来源",并自负版权等法律责任。如擅自篡改为" 来源:编玩边学 " ,本网站将依法追究其法律责任。

3、如果本网所转载内容侵犯了您的权益,请与我们联系team@codepku.com,我们将及时处理。

证书查询 x
请输入证书编号:

请输入正确的证书编号

学员姓名:孙兴民

课程:Scratch Level 1

发证日期:2019.08.15

证书查询

该证书不存在