/algorithm

数据结构与算法的学习与思考

Primary LanguageJava

我觉得学习算法的态度就是思考,思考,再思考。

  1. 第一个是思考是指 面对 ,不要看见算法题就觉得很难,不去想,然后通过搜索来得到答案,可是你应该明白,在如今这个互联网时代,资料随处可得,重要的是你面对问题的时候是否可以真正分析,调试,解决它。
  2. 第二个思考是通过你所具备的知识和能够查阅的资料去 解决 它,无论怎么样,其实我们都是可以对一个问题有办法解决,最差的也可以通过穷举法来列出来,只不过这样很傻就是了,然后我们通过查看别人的优秀解法来完善自己的解法。
  3. 第三个思考是根据实际情况来 选择 实际的解法,因为很多时候最优的解决其实并不适用于现在情况,这个时候就要求我们能够有所取舍。

我希望通过学习算法来让自己考虑问题变得全面和面对一个自己没有遇到过的问题(无论是逻辑上的还是业务上)能够冷静地思考解决问题的方法。

基本数据结构

线性

非线性

排序

$$ \begin{cases}内部排序 \begin{cases}插入排序\begin{cases}直接插入排序\希尔排序\end{cases}\选择排序\begin{cases}简单选择排序\堆排序\end{cases}\交换排序\begin{cases}冒泡排序\快速排序 \end{cases}\归并排序\\ 基数排序\end{cases}\外部排序 \end{cases} $$

查找

字符串

递归

尾调用优化

动态规划

LeetCode

LeetCode Java Solutions:https://leetcode.morethink.cn/#/source/

剑指offer

所有题都在牛客网 ac: 题目地址:https://www.nowcoder.com/ta/coding-interviews Java solutions:https://github.com/morethink/algorithm/tree/master/src/algorithm/swordtooffer

牛客网的第n题对应于src/algorithm/swordtooffer中的�Testn+2