数据结构与算法内容介绍
-
先看几个经典的算法面试题
字符串匹配问题:
- 有一个字符串 str1="程序员 程序员你程序 程序员你程序员你程序员你好",和一个子串 str2="程序员你程序员你"
- 现在要判断str1是否含有str2,如果存在,就返回第一次出现的位置,反之返回-1
- 要求用最快的速度来完成匹配,你的思路是什么?
- 暴力匹配【简单,但是效率低】
-
KMP算法《部分匹配表》
汉诺塔游戏:
请完成汉诺塔游戏的代码,要求:
- 将A塔的所有圆盘移动到C塔。
- 在小圆盘上不能放大圆盘。
- 在三根柱子之间一次只能移动一个圆盘。
八皇后问题
八皇后问题,是一个古老而注明的问题,是回溯算法的经典案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。【92种】
- 分治算法
- 马踏棋盘算法也被称为骑士周游问题
- 将马随机放在国际象棋的8X8棋盘Board[0~7] [0~7]的某个方格中,马按走棋规则(马走日字)进行移动。要求每个方格只进入一次,走遍棋盘上全部64个方格
- 会使用到图的深度优化遍历算法(DFS)+ 贪心算法优化