前言
算法到底应该怎么学习?,不管是 Java,python,还是 PHP,都跨不过算法这个门槛。同样跨不过算法这个门槛的还有 Android。
学习路线图:
算法的学习建议从数据结构开始。从某种程度上说,数据结构是算法的基础。对常用的数据结构有了一定程度的掌握后就可以开始学习算法了。
数据结构:
- 线性表 ArrayList
- 链表 LinkedList
- 栈 Stack
- 队列:Queue、Deque、阻塞队列
- Tree :平衡二叉树、红黑树
- 映射表:HashTable、HashMap、SparseArray、ArrayMap
算法:
- 排序算法:冒泡排序、选择排序、插入排序、快速排序、堆排序、基数排序
- 查找算法:折半查找、二分查找、树形查找、hash查找
为了更好的学习和巩固数据结构与算法知识,下面给大家分享一份【算法宝典】,内容大纲主要包括动态规划系列,数据结构系列,算法思维系列,以及高频面试系列四个主要章节。
第一章、动态规划系列
动态规划问题的⼀般形式就是求最值。动态规划其实是运筹学的⼀种最优化 ⽅法,只不过在计算机问题上应⽤⽐较多,⽐如说让你求最⻓递增⼦序列 呀,最⼩编辑距离呀等等。
- 动态规划设计:最长递增子序列
- 经典动态规划:0-1 背包问题
- 经典动态规划:完全背包问题
- 经典动态规划:子集背包问题
- 经典动态规划:编辑距离
- 经典动态规划:高楼扔鸡蛋
- 经典动态规划:高楼扔鸡蛋(进阶)
- 经典动态规划:最长公共子序列
- 动态规划之子序列问题解题模板
- 动态规划之博弈问题
- 动态规划之正则表达
- 动态规划之四键键盘
- 动态规划之KMP字符匹配算法
- 贪心算法之区间调度问题
- 团灭 LeetCode 股票买卖问题
- 团灭 LeetCode 打家劫舍问题
第二章、数据结构系列
- 算法学习之路
- 二叉堆详解实现优先级队列
- LRU算法详解
- 二叉搜索树操作集锦
- 如何计算完全二叉树的节点数
- 特殊数据结构:单调栈
- 特殊数据结构:单调队列
- 设计Twitter
- 递归反转链表的一部分
- 队列实现栈|栈实现队列
第三章、算法思维系列
- 回溯算法团灭子集、排列、组合问题
- 回溯算法最佳实践:解数独
- 回溯算法最佳实践:括号生成
- 滑动窗口技巧
- twoSum问题的核心思想
- 常用的位操作
- 拆解复杂问题:实现计算器
- 烧饼排序
- 前缀和技巧
- 字符串乘法
- FloodFill算法详解及应用
- 区间调度之区间合并问题
- 区间调度之区间交集问题
- 信封嵌套问题
- 几个反直觉的概率问题
- 洗牌算法
- 递归详解
第四章、高频面试系列
- 如何高效寻找素数
- 如何高效进行模幂运算
- 如何运用二分查找算法
- 如何高效解决接雨水问题
- 如何去除有序数组的重复元素
- 如何寻找最长回文子串
- 如何运用贪心思想玩跳跃游戏
- 如何 k 个一组反转链表
- 如何判定括号合法性
- 如何寻找缺失的元素
- 如何同时寻找缺失和重复的元素
- 如何判断回文链表
- 如何在无限序列中随机抽取元素
- 如何调度考生的座位
- Union-Find算法详解
- Union-Find算法应用
- 一行代码就能解决的算法题
- 二分查找高效判定子序列
最后
算法宝典一共532页,篇幅有限,没有全部展示,如果需要【算法宝典完整版】可以【点击此处免费获取~】