数据结构
文章平均质量分 83
赶路的苟狗
因为相信,所以看见
展开
-
刷leetCode需要掌握的一些数据结构---JAVA篇
基本数据结构一览1.Collection接口Collection是最基本的集合接口,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。这个接口有两个基本方法:public interface Collection<E>{ boolean add(E element); Iterator<E> iterator(); ...}如何遍历Collection中的每一个元素?不论Collection的实际类型如何,它都支持一个it原创 2020-09-06 10:17:41 · 1089 阅读 · 0 评论 -
大话数据结构---(三)栈与队列
人生,就像是一个很大的栈演变。出生时你赤条条地来到人世,慢慢长大,渐渐地变老,最终还得赤条条地离开世间。人生,就像是一个大大的队列演变。无知童年、快乐少年、稚嫩青年、成熟中年、安逸万年。原创 2020-03-21 17:45:28 · 941 阅读 · 0 评论 -
大话数据结构---(二)线性表详解
看到线性表,小编第一联想到的是数组,因为数组内元素的内存地址是线性存储的,可以说是一条直线了。可线性表又分为线性存储结构和链式存储结构,刚开始并不明白,既然是“线性”表那为什么还可以是链式的。现在才搞懂,所谓线性,并不是对内存地址的描述。它是对数据的描述,你可以通过一根“线”遍历你需要的所有数据(不走回头路),而数组是既满足数据线性又满足地址线性的特殊线性表。原创 2020-03-20 21:19:44 · 917 阅读 · 1 评论 -
大话数据结构---(八)排序
本章一共要讲解七种算法,按照算法的复杂度分为两大类,冒泡排序、简单选择排序和直接插入排序属于简单算法。而希尔排序、堆排序、归并排序、快速排序属于改进算法。接下来我们将依次讲解。原创 2020-04-03 16:46:40 · 830 阅读 · 0 评论 -
大话数据结构---(七)平衡二叉树
这章的话,感觉优点枯燥,主要是代码有点难理解,小编在看书时也是多次想跳过这章,但平衡二叉树确实是很重要的一章,所以就很尴尬的看完了,看完后似懂非懂,借着写博客的机会重新梳理一遍,也希望能给大家提供一些帮助。原创 2020-04-02 15:27:07 · 1181 阅读 · 3 评论 -
大话数据结构---(七)二叉排序树
1.定义二叉排序树,又称二叉查找树。它或者是一棵空树,或者是具有下列性质的二叉树。若它的左子树不空,则左子树上所有结点的值均小于它的根结构的值。若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值。它的左、右子树也分别为二叉排序树。构造二叉排序树的目的,其实并不是为了排序,而是为了提高查找和插入删除关键字的速度。2.二叉排序树查找操作首先我们提供一个二叉树的结构。typ...原创 2020-04-01 20:32:24 · 800 阅读 · 0 评论 -
大话数据结构---(七)有序查找
作为学习编程的人,面对查找或者叫做搜索(Search)这种最为频繁的操作,理解它的原理并学习应用它是非常必要的事情。原创 2020-04-01 11:31:33 · 899 阅读 · 0 评论 -
大话数据结构---(六)最短路径算法
和介绍最小生成树的两种方法不同,最短路径的两种方法:Dijkstra算法和Floyd算法,我打算直接用代码的形式来讲解,也会配上相应的示例,但不会一步步分析过程,重在掌握其思想,并能自己写出代码。原创 2020-03-31 17:39:34 · 973 阅读 · 0 评论 -
大话数据结构---(六)最小生成树
之前我们了解了图的深度优先遍历和广度优先遍历。作用是在不重复经过同一点的情况下,遍历所有点。细心的人可能会发现,这些图中两点间的路径值是一样的,也就是没有权值。这里我们可以将问题再复杂点,如果给每条边赋上权值,该怎样连接结点,才能使连接的总路径最短---最小生成树,这就是本篇文章要介绍的内容,以及两种获得最小生成树的方法,普利姆算法和克鲁斯卡尔算法。原创 2020-03-31 12:51:19 · 857 阅读 · 0 评论 -
大话数据结构---(六)图的深度优先遍历和广度优先遍历
我们已经掌握了如何存储图中的信息,即邻接矩阵,邻接表,十字链表等。那么我们该如何利用这些存储结构中的数据呢,或者说我该如何找到我想要的数据呢,这里我们就得学会如何遍历图结构,而接下来会和大家介绍两种常用的遍历方法,深度优先遍历和广度优先遍历。原创 2020-03-30 20:55:45 · 16244 阅读 · 3 评论 -
大话数据结构---(六)图的前期准备
如果学完树那章,觉得概念比较多记不住,那么图这章。。。请君保重!这里不会过于详细的介绍概念,课本上都有,只会大致罗列这些概念的关系,便于记忆。原创 2020-03-30 15:20:10 · 844 阅读 · 0 评论 -
大话数据结构---(五)二叉树
1.二叉树的基本概念二叉树是n个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。二叉树特点(1)每个结点最多有两棵子树。(2)左子树和右子树是有顺序的,次序不能任意颠倒。(3)即使树中某结点只有一棵子树,也要区分它是左子树还是右子树。特殊二叉树满二叉树:如果所有分支结点都存在左子树和右子树,并且所有叶子都...原创 2020-03-28 12:50:23 · 1179 阅读 · 0 评论 -
大话数据结构---(五)二叉树的来由
小编想提前说明一点,这篇文章并不会像教课书那样的强调概念,只会介绍一些比较重要或常见的定义。小编更看重的是树的原理以及如何更好的理解它,到最后能灵活运用。原创 2020-03-27 19:35:04 · 1103 阅读 · 0 评论 -
AI贪吃蛇的N种死法及通用解法
1.简要介绍:在一个n*m的网格面板里,面板里有一些障碍物,面板周围是墙壁。起始长度为3的蛇,会通过游走不断进食豆子,每吃一个豆子,身子长度也会加1。当蛇吃完当前面板里的所有豆子后,面板会重新刷新十个豆子,且豆子不会刷新在蛇身上或障碍物上,蛇身长度越长,获胜的几率越大。蛇的行走方向只能是上,下,左,右,每次行进一格,且蛇身除了蛇尾一小格,均视为障碍物。易得知,随着蛇身长度增加,暴毙概率也会大大增...原创 2020-03-23 18:04:58 · 3555 阅读 · 2 评论 -
大话数据结构---(一)绪论
在真正进入数据结构的学习之前,小编觉得有必要先认识数据结构的基本概念,但这些基本概念并不会像书本上描述的那样晦涩难懂。因为小编现在也只是个初学者,在阅读了一些书籍之后,在这里以笔记的方式和大家分享原创 2020-03-19 20:23:09 · 843 阅读 · 1 评论 -
大话数据结构---(四)KMP算法
看了很多KMP的相关资料,也看了一些博客,众说纷纭,说法其实大部分都没有错,只是理解角度不同。这也使得一些初学者由本来的一知半解,看了半天,到最后一头雾水。小编则是如此,折腾了一下午,才有话可说,这里就直奔主题吧。1.KMP模式匹配算法原理如果主串S=“abcdefgab”,我们要匹配的T=“abcdex”,那么如果用朴素算法的话,前5个字母,连个串完全相等,直到第6个字母,“f”与“x”不...原创 2020-03-24 21:29:25 · 1075 阅读 · 0 评论