前言

算法到底应该怎么学习?,不管是 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页,篇幅有限,没有全部展示,如果需要【算法宝典完整版】可以【点击此处免费获取~