文章目录
1.1 数据结构和算法内容介绍
1.1.1 先看几个经典的算法面试题
1.字符串匹配问题::
- 有一个字符串str1= ““硅硅谷尚硅谷你尚硅尚硅谷你尚硅谷你尚硅你好””,和一个子串str2="尚硅谷你尚
硅你"
-
现在要判断str1 是否含有str2, 如果存在,就返回第一次出现的位置, 如果没有,则返回-1
-
要求用最快的速度来完成匹配
-
你的思路是什么?
暴力匹配[简单,但是效率低]
KMP 算法《部分匹配表》
2.汉诺塔游戏,
请完成汉诺塔游戏的代码: 要求:
- 将A 塔的所有圆盘移动到C 塔。并且规定,在
- 小圆盘上不能放大圆盘
- 在三根柱子之间一次只能移动一个圆盘
3. 八皇后问题
八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于
1848 年提出:在8×8 格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任意两个皇后都不能处于同一行、
同一列或同一斜线上,问有多少种摆法。【92】=> 分治算法
马踏棋盘算法介绍和游戏演示
-
马踏棋盘算法也被称为骑士周游问题
-
将马随机放在国际象棋的8×8 棋盘Board[0~7][0~7]的某个方格中,马按走棋规则(马走日字)进行移动。要求
每个方格只进入一次,走遍棋盘上全部64 个方格
-
游戏演示: http://www.4399.com/flash/146267_2.htm
-
会使用到图的深度优化遍历算法(DFS) + 贪心算法优化
1.1.2 数据结构和算法的重要性
-
算法是程序的灵魂,优秀的程序可以在海量数据计算时,依然保持高速计算
-
一般来讲程序会使用了内存计算框架(比如Spark)和缓存技术(比如Redis 等)来优化程序,再深入的思考一下,这
些计算框架和缓存技术, 它的核心功能是哪个部分呢?
- 拿实际工作经历来说, 在Unix 下开发服务器程序,功能是要支持上千万人同时在线, 在上线前,做内测,一切
OK,可上线后,服务器就支撑不住了, 公司的CTO 对代码进行优化,再次上线,坚如磐石。你就能感受到程序
是有灵魂的,就是算法。
- 目前程序员面试的门槛越来越高,很多一线IT 公司(大厂),都会有数据结构和算法面试题(负责的告诉你,肯
定有的)
- 如果你不想永远都是代码工人,那就花时间来研究下数据结构和算法
1.1.3 亮点
-
课程深入,非蜻蜓点水
-
课程成体系,非星星点灯
-
高效而愉快的学习, 数据结构和算法很有用,很好玩
-
数据结构和算法很重要,但是相对困难,我们努力做到通俗易懂
-
采用应用场景->数据结构或算法->剖析原理->分析实现步骤(图解)->代码实现的步骤讲解[比如: 八皇后问
题和动态规划算法]
1.1.4 学习笔记
java数据结构 第1章-内容框架介绍
java数据结构 第2章-数据结构和算法概述
java数据结构 第3章-稀疏数组和队列
java数据结构 第4章-链表(单链表)
java数据结构 第4章-链表(双向链表)
java数据结构 第5章–栈
java数据结构 第6章–递归
java数据结构 第7章–排序算法01
java数据结构 第7章–排序算法02-冒泡排序
java数据结构 第7章–排序算法03-选择排序
java数据结构 第7章–排序算法04-插入排序
java数据结构 第7章–排序算法05-希尔排序
java数据结构 第7章–排序算法06-快速排序
java数据结构 第7章–排序算法07-归并排序
java数据结构 第7章–排序算法08-基数排序
java数据结构 第7章–排序算法09-常用排序算法总结和对比!
持续更新
1.1.5 学习资料
- 视频:尚硅谷Java数据结构与java算法(Java数据结构与算法)
- github:点击跳转
- 学习框架:如下