为什么会有这个
这个100天的挑战本来是我自己的计划,现在将学习过程分享给大家。最新的文章更新会在我的公众号 人魔七七 首发,大家可以关注更新,并在后期还会有这个系列的电子书下载方便大家学习阅读。
App来了
APP 的名字叫“啊!算法” ;App Store下载地址:App Store地址
这个系列的加强版App要来了。一直想找一种方式来呈现他,今天终于实现了。
这里不只包含 Stack,Queue,Heap,Tree,LinkedList,Graph,Hash Table等常见的数据结构的实现。
而且包含常见的算法实现,这些算法有来自于LeetCode,看过算法的人应该都知道,LeetCode一直很少有iOS实现的方式,特别是OC语言为主的实现。
这里不只有文章介绍而且有代码可以预览查看,并且还有可交互动画展示。
其他平台
由于微信公众号对markdown的数学公式显示有点问题,因此内容有些会同步到简书或者掘金。
这是什么东西
很多技术越往底层大致皆相似,皆是数据结构与算法的缩影。这就是为什么一线互联网公司面试时候特别注重这方面的考察,国外公司甚至很多轮面试都是这方面考察。每篇文章除了有文字描述,有的还有图片以及动画方便大家理解,还会有源代码Demo,尽量用通俗易懂的方式让大家明白。
怎么做呢
每周会更新一到两篇数据结构与算法方面的东西,大家也可以跟着做,监督自己进步。
电子书书的大致介绍
封面
目录内容
Day01 - 算法的符号大O
- 为什么要学习算法呢
- 数学公式复习
- 常用复杂度函数公式O(?)
Day02 - 栈
- 栈的特性
- 动画描述
- 栈最常见的场景及算法
- 复杂度
- 代码实现
Day03 - 栈的算法实战Valid Parentheses
- 思路描述
- 代码实现
- 复杂度估算
Day04 - 栈的算法实战 逆波兰表示法
- 步骤示意图
- 思路描述
- 代码实现
Day05 - 栈的算法实战 Evaluate Reverse Polish Notation
- 流程图
- 代码实现
- 思路描述
- GitHubDemo
Day06 - 栈的算法实战 Simplify Path
- 题目思路描述
- 灵感示意图
- 主要代码实现
- 代码思路描述
- GitHubDemo
Day07 - 栈的算法实战 Min Stack
- 题目描述
- 灵感示意图
- 主要代码实现
- 代码思路描述
- GitHubDemo
Day08 - 栈的算法实战 TrappingRainWater
- 题目描述
- 灵感示意图
- 思路
- 过程图
- 主要代码实现
- 代码思路描述
- GitHubDemo
Day09 - iOS中数组的算法分析
- 前言
- iOS中数组是怎么优化的呢?
- 结合数组API来分析
- 推荐阅读
- GitHubDemo地址
Day10 - 队列
- 队列的特性
- 有几个注意的地方。
- 主要代码讲解
- 总结
- GitHubDemo地址
Day11 - 双端队列
- 双端队列的特性
- 优化思路
- 主要代码实现以及讲解
- GitHubDemo地址
Day12 - 树
- 前言
- 树的一些应用场景
Day13 - Binary Tree上
- 一张图来描述Binary Tree
- Binary Tree的几个常见类型
- 和Binary Tree有关的一些公式
- 二叉树的存储方式
Day14 - Binary Tree Traversal
- 二叉树的周游算法
- 练习周游算法的技巧 1
- 练习周游算法的技巧 2
- 练习周游算法的技巧 3
- 延伸
Day15 - Binary Tree 的实现
- 二叉树的构建
- 二叉树的插入,查找
- 二叉树的前中后序遍历
- GitHubDemo地址
Day16 - 二叉树的算法实战 Binary Tree Paths
- 题目大意
- 灵感思路
- 主要代码
- 代码思路
- GitHubDemo地址
Day17 - 二叉树的算法实战 Minimum Depth of a Binary Tree
- 题目大意
- 主要代码
- 灵感思路
- GitHubDemo地址
Day18 - 二叉树的算法实战 Sum Root to Leaf Numbers
- 题目大意
- 主要代码
- 灵感思路
- GitHubDemo地址
Day19 - 二叉树的算法实战 Path Sum III
- 题目大意
- 解题思路
- 主要代码
- 代码思路
Day20 - 二叉树的算法实战 Same Tree
- 题目大意
- 解题思路
- 主要代码
- 代码思路
- 复杂度分析
Day21 - 二叉树的算法实战 symmetric-tree
- 题目大意
- 解题思路
- 主要代码
- 代码思路
- 复杂度分析
Day22 - 二叉树的算法实战 二叉树的最大深度
- 题目大意
- 解题思路
- 主要代码
- 代码思路
- 复杂度分析