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,我们将及时处理。
请输入正确的证书编号
学员姓名:孙兴民
课程:Scratch Level 1
发证日期:2019.08.15