数据结构与算法java学习笔记
Atomatom98
但行好事 莫问前程
展开
-
算法套路学习之BFS广度优先搜索
来源:https://leetcode-cn.com/problems/open-the-lock/solution/wo-xie-liao-yi-tao-bfs-suan-fa-kuang-jia-jian-dao-/ 又是看这个大佬学习的,下面我自己总结一下,并且记录一下遇到的使用BFS的题目,验证一下这个套路的可行性。一直比较讨厌这种题,因为没有总结出一套框架来。(现在回溯熟悉的差不多了 哈哈哈哈) 一.背景和框架 BFS本质:本质上就是一幅「图」,让你从一个起点,走到终点,问最短路径 下面是算法的原创 2020-05-22 17:17:31 · 229 阅读 · 0 评论 -
算法套路学习之回溯算法-----子集,排列,组合等问题如何解决
来源:https://www.cnblogs.com/labuladong/p/12320463.html 我是看这个大佬的博客学习到的,下面我自己总结一下,并且记录一下遇到的使用回溯的题目,验证一下这个套路的可行性。一直比较讨厌这种题,因为没有总结出一套框架来。 一.需要思考的问题 解决一个回溯算法题,只需要以下三点: 路径:也就是已经做出的选择。 选择列表:也就是你当前可以做的选择 结束条件:也就是到达决策树底层,无法再做选择的条件 其实我看到这个也是一脸懵逼的,但是后来看例子就明白了,下面是算法原创 2020-05-08 22:52:47 · 310 阅读 · 0 评论 -
常用八种排序总结(Java版本)
前言 说实话还是为了准备(可能有的)面试,哈哈,先把常用的总结一下。我想的是这样:排序算法应该要经常手撕,所以可以在markdown编辑状态下经常写,然后和文章里的对一下,这样效果可能比较好。 1.复杂度,稳定性总结 注意:一般来说最好和最快问的少 二.代码实现 冒泡排序: 介绍:一种简单的排序算法,其方法是:首先将第一个关键字与第二个关键字进行比较,若逆序,则交换位置;然后比较第二个与...原创 2020-03-27 23:37:13 · 161 阅读 · 0 评论 -
数据结构与算法学习笔记6--------排序算法1
1.冒泡排序 2.插入排序 3.选择排序 4.希尔排序 1.冒泡排序 冒泡排序的基本思想是:遍历需要排序的数组,依次比较相邻元素,把相对较大的放到后面,这样大的数就会像冒泡一样排在后方。 public static void BubbleSorting(int[] arr) { boolean flag = false;//标识 用来优化冒泡排序 int temp =...原创 2019-08-08 19:37:21 · 128 阅读 · 0 评论 -
数据结构与算法学习笔记5--------递归算法
1.迷宫问题 2.八皇后 3.感想 1.迷宫问题 迷宫问题的情景是这样的,有一个迷宫,其中有墙壁,也就是无法到达的地方,设置一个起点,一个终点,让目标寻找路线,如果找到返回true 否则返回false /** * * @param map地图 * @param i 确定坐标 * @param j 确定坐标 * @return 找到了返回true 否则返回fal...原创 2019-08-05 18:15:00 · 148 阅读 · 0 评论 -
数据结构与算法学习笔记4--------中缀表达式转后缀表达式
一.什么是中缀表达式 前缀(波兰式)、中缀、后缀(逆波兰式)表达式三者都是运算表达式,只是形式有区别,即运算符相对与操作数的位置不同:前缀表达式的运算符位于与其相关的操作数之前;后缀表达式运算符位于与其相关的操作数之后。 中缀表达式是人常用的运算表达式,对于人脑来说容易理解,但是对计算机来说计算中缀表达式较为困难,故需要把中缀表达式转为后缀表达式再进行运算。 public static List&...原创 2019-08-05 17:47:00 · 166 阅读 · 0 评论 -
数据结构与算法学习笔记2--------环形队列
为什么要有环形队列? 因为普通的队列空间无法复用,单纯的将rear,front两个指针进行增加,导致出队列的数据所占的空间没法使用,这样的话队列的空间会越来越少,于是出现了环形队列. 环形队列的变化 首先,环形队列中rear,和front指代的含义发生了变化: rear指向队列最后一个数据的后一个位置; front指向队列的第一个数据的位置 其次,环形队列中进行约定,预留一个空间,也就是r...原创 2019-07-27 09:58:36 · 186 阅读 · 0 评论 -
数据结构与算法学习笔记3--------单链表(2)
1.查找倒数第几个 2.单链表反转 3.逆序打印 4.单链表合并 几道面试题 1.查找倒数第几个 //题目2:查找获取单链表倒数第index个结点 //1.编写一个方法接收head结点,接收一个index(表示倒数第index个结点) //2.先把链表从头到尾遍历,得到链表长度length //3.得到length后,从链表第一个开始遍历,遍历length-index个 ...原创 2019-07-31 21:58:07 · 119 阅读 · 0 评论 -
数据结构与算法学习笔记3--------单链表(1)
1.单链表 1.1定义 1.2增加 1.3删除 2.双向链表 2.1增加和删除 单链表 单链表本身:单链表是一种数据结构,它在逻辑上将数据用一个链串起来,每个数据可以容易地访问他的下一个数据,但是在实际内存中,链表中的数据并不是顺序存储的! 单链表定义:一个结点包括标号,数据域(可以存放需要的字母数字等数据),还有一个结点 这个结点表示该结点的后继结点. 代码实现...原创 2019-07-31 21:34:38 · 138 阅读 · 0 评论 -
数据结构与算法学习笔记--------1.稀疏数组
数据结构与算法学习1------稀疏数组 - 1.应用场景-----什么时候用 一个数组中大部分元素为0,少部分数据不为0的情况,这时候使用一般的二维数组就非常浪费内存空间 - 2.具体实现------稀疏数组如何生成 稀疏数组共3列 分别表示原数组的行,列,和值。其中第一行的行字段值为原数组的行数,列为原数组列数,值为原数组不为0的数据个数。从第二行开始,依次将原数组中不为0的数据进行表示,具...原创 2019-07-26 17:12:43 · 656 阅读 · 0 评论