Java 数据结构与算法1——几个经典算法面试题
简介
本文会介绍十大常用算法,二分查找(非递归)、分治、动态规划、贪心、KMP、马踏棋盘等
先看几个经典算法面试题
- 字符串匹配问题 1)有一个字符串 str1="“硅硅谷尚硅谷你尚硅尚硅谷你尚硅谷你尚硅你好”",和一个子串 str2=“尚硅谷你尚硅你” 2)现在要判断str1是否含有str2,如果存在,就返回第一次出现的位置,如果没有,则 返回-1 3)要求用最快的速度来完成匹配 4)你的思路是什么? 思路一:暴力匹配,简单、效率低 思路二:KMP算法,部分匹配表
- 汉诺塔游戏 请完成汉诺塔游戏的代码: 要求: 1)将A塔的所有圆盘移动到C塔。并且规定, 2)在小圆盘上不能放大圆盘, 3)在三根柱子之间一次只能移动一个圆盘 思路:分治算法,
- 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例 该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 思路:回溯算法。高斯认为有76种,图论的方法有92种。
- 马踏棋盘算法介绍和游戏演示 1)马踏棋盘算法也被称为骑士周游问题 2)将马随机放在国际象棋的8×8棋盘 Board[0~7][0~7]的某个方格中,马按走棋规则(马走日字)进行移动。要求每个方格只进入一次,走遍棋盘上全部64个方格 3)游戏演示: http://www.4399.com/flash/146267_2.htm 思路:图的深度优化遍历算法(DFS) +贪心算法优化
在学习算法之前,搞定数据结构!
数据结构分两大类,线性结构(栈、队列、链表)和非线性结构(图和树)。 接下来要学习的内容如下表所示:
学习步骤:应用场景->数据结构或算法->剖析原理->分析实现步骤(图解)->代码实现
接下来会陆续更新学习笔记~~~
下一篇:
贪心算法C语言解决删数问题