数据结构
文章平均质量分 67
Java实现数据结构!
梦の澜
至于未来会怎样,要走下去才知道,反正路还很长,天总会亮。
展开
-
高阶 DS --- AVL 树
高阶 DS —— AVL 树原创 2022-07-06 10:11:19 · 409 阅读 · 3 评论 -
Java详解数据结构------泛型------Generics
原创 2022-03-02 11:44:56 · 524 阅读 · 2 评论 -
java解决数据结构----排序问题-----Sorting problem
原创 2022-03-01 11:41:47 · 853 阅读 · 11 评论 -
java详解数据结构-----堆-----Heap
声明:关于文章的任何问题,以及知识点相关问题,可以私信博主,博主虽能力一般,但定尽全力为大家解决文章前言:上篇文章我们讨论过二叉树,在上篇文章中我们采用的是链式存储一颗二叉树,那么在本篇文章中将介绍一种新的存储方式,使用顺序存储方式去存储一颗二叉树(这里的二叉树一般指的是完全二叉树),这种存储方式我们管它叫堆,下面我们开始堆的学习文章目录:...原创 2022-02-24 14:33:39 · 1524 阅读 · 8 评论 -
分分钟带你解决数据结构------Java详解二叉树
声明:此博客涵盖众多二叉树知识点,可供学校期末考试,可供提升对二叉树的理解文章前提:通过本文章可以掌握:二叉树数据结构的概念和基本实现二叉树前中后序的递归写法掌握二叉树层序的写法二叉树的前中后序的非递归写法二叉树相关的面试题文章目录:...原创 2022-02-11 16:51:45 · 824 阅读 · 40 评论 -
Leetcode ---- 20 ----有效括号(Java解法利用栈解决)
题目:力扣 – 20 – 有效括号题目思想:遍历整个字符串,利用栈把所有的左括号都存储起来,当遇到右括号的时候,所遇右括号形状和栈中左括号一致就进行弹栈,当遍历整个字符串后,栈为空证明所有左括号都有与之匹配的右括号,这种情况被称为有效括号,其他情况下均不是有效的字符串无效括号存在以下三种情况:(只简单举一个例子)①、左括号多:②、右括号多:③、左右括号不匹配:代码解决:情况分析:①、匹配情况②、左括号多③、右括号多:④、左右括号不匹配class Solution原创 2022-01-16 21:23:25 · 246 阅读 · 1 评论 -
LeetCode - 2 / 445 / 剑指offer25 - 链表中的二个数字相加(详细)
声明:此类题为力扣链表编号为 2,445,以及剑指offer的第25题文章前言相同点:我们仔细阅读过上面的题后,发现他们其实都是一道题,就是两个链表的每个结点数值相加后组成的一个新的链表不同点:第一道题,新链表的每个结点的数值和两个链表加和的结果顺序是一致的不同点:第二题和剑指offer的题目,新链表的每个结点的数值和两个链表逆置后加和的结果顺序是一致的图解区别:剑指offer和编号445题:总的来说:二者差的就是一步逆序的过程题目大体思路:步骤一、分别遍历两个链表,加和他们的原创 2022-01-06 12:10:17 · 620 阅读 · 4 评论 -
分分钟带你解决数据结构问题---- List接口中的ArrayList
声明:博主gitee内附Java学习笔记文章前言:那么集合框架就是 Java 写好的一些数据结构,像是顺序表,链表,栈和队列……这些数据结构不需要我们去手动的进行实现,我们要做的就是去了解一下每个集合框架背后的数据结构文章目录:1、预备知识----泛型2、1、预备知识----泛型声明:在这里的泛型了解为主,后面会有专门的博客去解释泛型,这里只是简单的预备知识,以看得懂原码为主要目的以上的代码会引发一定的问题:由于使用泛型 E/T 不可以实例化数组,这里先提供一个可原创 2022-01-05 16:01:22 · 992 阅读 · 13 评论 -
分分钟带你解决数据结构问题-----集合框架及其背后的数据结构
声明:博主gitee博主的学习笔记原创 2021-12-31 17:56:51 · 763 阅读 · 2 评论 -
分分钟带你解决数据结构入门----时间 / 空间复杂度
原创 2021-12-30 15:10:34 · 1034 阅读 · 0 评论 -
Java解决数据结构---全系列文章目录
声明:本博客汇集了博主所有相关数据结构的文章链接,持续更新!!!!数据结构一向是令大家头疼的科目,这里博主也在学习数据结构的过程中,过程中会随时写博客记录学习,会对大家有一定帮助,希望可以解决大家数据结构学习的一些困难,跟着博主一起拿捏数据结构吧!!!!!!???????????????????????? 系列文章(随着学习跟新目录板块):时间复杂度和空间复杂度:顺序表实现:单链表实现:双链表实现:链表和顺序表的区...原创 2021-12-28 15:32:07 · 277 阅读 · 0 评论 -
一分钟解决数据结构问题----两两交换链表中的结点(进阶)
此题为力扣中等链表题目???? 文章目录:1️⃣.题目解析2️⃣.代码实现+图解3️⃣.全部代码题目:1️⃣.题目解析题目要求交换两个相邻的交点,该题需要使用一个傀儡结点在不改变结点数值的情况下实现交换,使用傀儡结点依次去把结点重新串联起来,最后返回新链表的头即可2️⃣.代码实现+图解步骤一、定义一个傀儡结点,由于其数值域没有任何意义,所以这里把傀儡结点的数值设置为 1 ListNode newHead = new ListNode(-1);步骤二、设置一个 tmp 用于去遍历原创 2021-11-23 15:38:28 · 532 阅读 · 2 评论 -
一分钟解决数据结构问题-----删除链表的倒数第N个结点
此题为力扣中等链表题目???? 文章目录:1️⃣.题目解析2️⃣.代码实现3️⃣.全部代码题目:1️⃣.题目解析题目要求我们删除链表倒数第N的结点(N为题目给定的数值),题目的大致思路是:先找到题目要求的这个结点位置,记录好这个结点的前驱,再进行删除即可,原理很简单,需要运用到快慢指针的思想,下面进行具体代码实现2️⃣.代码实现步骤一、先判断链表为不为空,如果为空无法进行删除操作,返回空对象if (head == null){ return null;原创 2021-11-22 16:54:56 · 291 阅读 · 0 评论 -
一分钟解决数据结构问题---两个链表数值相加(简单易理解)
此题为力扣中等链表题目???? 文章目录:1️⃣.题目解析2️⃣.代码实现3️⃣.全部代码题目:1️⃣.题目解析原创 2021-11-17 11:31:12 · 786 阅读 · 0 评论 -
一分钟解决数据结构问题----移除重复结点(链表未排序)
此题为力扣题库题目???? 文章目录:1️⃣.题目解析2️⃣.代码实现3️⃣.全部代码题目:1️⃣.题目解析题目需要我们删除链表中重复的结点,注意这里的结点是未经过排序的,所以之前的是删除有序链表的元素方法不适用,需要进行修改,定义一个前驱用于和一个遍历链表的 cur ,把 cur 和 prev 的数值进行一一比对,删除重复的结点即可,下方代码实现2️⃣.代码实现步骤一、定一个前驱 prev 记录链表的开始,用这个 prev 和后面链表的结点数值进行比较ListNode prev =原创 2021-11-14 11:31:14 · 642 阅读 · 0 评论 -
探讨面试问题:链表和顺序表的区别
???? 当面试官问到以下三个问题的任意一个问题:????顺序表和链表的区别 数组和链表的区别 ArrayList 和 LinkedList 的区别???? 以上三个问题都是一个问题,就是在问:双向链表和顺序表的区别技巧:当面试官问到 #### 和 #### 的区别的时候,一定记住,先从共同点出发这两种数据结构的共同点都是:线性表这两种数据结构的不同点都是:对数据的组织方式和操作方法组织方式:顺序表底层是一个数组,它在逻辑和物理上是连续的 链表是由若干个结点组成的一个原创 2021-11-13 15:53:46 · 822 阅读 · 0 评论 -
几分钟解决数据结构问题----双向链表(超详细)
???? 文章前提:????本文章讨论的是无头双向非循环链表,由于笔试题,项目中……几乎涉及到的都是无头的双向非循环链表,所以本博客围绕上述双向链表种类展开 ???????? 文章目录:1. 双向链表的创建2. 双向链表的头插法3. 双向链表的尾插法4. 双向链表实现任意位置插入5. 查找是否包含关键字key是否在链表中6. 删除第一次出现关键字为key的节点7. 删除所有值为key的节点8. 得到单链表的长度9.清空链表10.总体代码1️⃣. 双向链表的创建首先双向链表不同原创 2021-11-13 15:08:18 · 1509 阅读 · 1 评论 -
一分钟解决数据结构问题-----链表开始入环的第一个节点
此题为力扣链表题目:???? 文章目录:1️⃣.题目解析2️⃣.代码实现3️⃣.全部代码题目:1️⃣.题目解析此题需要得到链表环的入口第一个结点,如果没有环返回空,该题需要推导一个公式:即链表到环的入口距离和相遇点到环的距离一致极端条件:一般情况:所以可以得出结论只要找到相遇的位置,相遇位置和链表的起始位置,同时走,当两个结点相遇时,即环的入口的第一个结点2️⃣.代码实现步骤一、判断链表为不为空if (head == null){ return nul原创 2021-11-11 21:59:58 · 793 阅读 · 0 评论 -
一分钟解决数据结构问题----判断链表是否有环
此题为力扣链表题目:???? 文章目录:1️⃣.题目解析2️⃣.代码实现3️⃣.全部代码题目:1️⃣.题目解析此题需要我们判断链表中有没有环,解题思路依旧运用到快慢指针,快指针一次走两步,慢指针一次走一步,看这俩个指针会不会相遇,如果有环当 fast 走到链表尾时会转回来,有一时刻会与 slow 相遇,这样就可以判断链表中有没有环2️⃣.代码实现步骤一、判断链表为不为空,如果为空,返回 false if(head == null){ return false;原创 2021-11-11 20:55:03 · 559 阅读 · 0 评论 -
一分钟解决数据结构问题---找出两个链表的第一个公共结点
此题为力扣链表题目:???? 文章目录:1️⃣.题目解析2️⃣.代码实现3️⃣.全部代码题目:1️⃣.题目解析题目要求:两个相交的链表,找到两个链表相交的第一个公共交点,这道题需要定义两个结点类型变量,一个用于指向较长链表(pl),一个用于指向较短链表(ps),较长的 pl 先走两个链表长度的差值步,两个指针再同时走,直到相遇,返回相遇的那个结点2️⃣.代码实现步骤一、先判断两个链表是不是为空,如果有一个为空,链表无法相交,直接返回空对象if (headA == null || hea原创 2021-11-11 20:27:32 · 341 阅读 · 0 评论 -
一分钟解决链表问题----判断链表的回文结构
此题为力扣链表题目:???? 文章目录:1️⃣.题目解析2️⃣.代码实现3️⃣.全部代码题目:1️⃣.题目解析回文结构即从头到尾遍历出的数值与从尾到头遍历得到的数值一致,即是回文结构,该题需要我们判断一个链表的回文结构,这道题需要用到快慢指针的思想,为了找到链表的中间结点(前面有类似的 oj 题目),从中间结点的下一个结点开始反转后半部分链表(前面有类似的 oj 题目),反转后两个指针一个从头走,一个从尾走,对比结点数值是否一致(分结点个数的奇数和偶数的情况),如果全程一致,最后返回:tru原创 2021-11-11 16:56:23 · 149 阅读 · 0 评论 -
一分钟解决数据结构问题----删除链表重复节点
此题为力扣链表题目:???? 文章目录:1️⃣.题目解析2️⃣.代码实现3️⃣.全部代码题目:????1️⃣.题目解析题目给定的是一个排序好的链表,所以重复结点的位置也一定是相邻的,此题需要定义一个傀儡结点,把不重复的结点都串连在傀儡结点后面,最后返回第一个不重复结点(新链表的头)即可2️⃣.代码实现步骤一、创建一个傀儡结点,其数值没有任何意义,任意一个数值即可,这里写的数值为 -1ListNode newHead = new ListNode(-1);步骤二、创建一个 tmp 用原创 2021-11-11 16:12:22 · 587 阅读 · 0 评论 -
一分钟解决数据结构问题----分割链表
此题为力扣链表题目:???? 文章目录:1️⃣.题目解析2️⃣.代码实现3️⃣.全部代码题目:????1️⃣.题目解析题目给定一个数字(比如10)要求比 10 小的数字都出现在大于等于 10 的数值前,这个数值(10)不一定出现在链表中,要求不能改变原来链表的相邻结点的初始相对位置,即初始时如果一个结点在另一个的右边(或者左边)移动后必须还是保持在其右边(或者左边)顺序不可以改变,这道题运用到需要运用到四个指针,运用分别记录位于给定数数值前的开始位置的:bs ,记录位于给定数数值前的结束位置原创 2021-11-11 15:41:53 · 289 阅读 · 0 评论 -
一分钟解决数据结构问题----合并两个有序链表
此题为力扣链表题目:???? 文章目录:1️⃣.题目解析2️⃣.代码实现3️⃣.全部代码题目:????1️⃣.题目解析题目给的是两个有序的链表,合并后仍需要保持链表的有序性,这道题需要引入一个傀儡结点,把两个链表串联起来,分别比较两个链表的数值大小(为了保证链表的有序性),再将其串联起来,最后判断是哪个链表走到了空,把空的那个链表链接到另外的一个结点目前的位置的后面即可完成链表的合并2️⃣.代码实现步骤一、创建一个傀儡结点,其数值没有任何意义,随便赋值一个数值即可,这里赋值的是 -1原创 2021-11-11 11:31:17 · 336 阅读 · 0 评论 -
一分钟解决数据结构问题----输出该链表中倒数第k个结点
此题为力扣链表题目???? 文章目录:1️⃣.题目解析2️⃣.代码实现3️⃣.全部代码题目:????1️⃣.题目解析题目要求给定一个下标 k 这个 k 为链表倒数的位置,需要得到的这个倒数结点的数值,利用快慢指针的思想,快指针先走 k - 1 步,slow 和 fast 再同时走,当fast 走到最后一个结点的时候,此时的 slow 刚好是倒数第 k 个结点返回 slow 的数值即可图解代码:2️⃣.代码实现步骤一、定义两个结点类型变量 fast 和 slowListNode fa原创 2021-11-11 10:55:10 · 218 阅读 · 0 评论 -
一分钟解决链表问题---链表的中间结点
此题为力扣链表题目:???? 文章目录:1️⃣.题目解析2️⃣.代码实现3️⃣.全部代码题目:1️⃣.题目解析题目所需:得到链表的中间结点,如果结点个数为单数,得到的是中间的结点,如果结点的个数为双数得到的是两个中间结点靠后的那个结点,此题运用到快慢指针的思想,快指针每次走两步,慢指针每次走一步,就可以得到中间结点2️⃣.代码实现步骤一、先判断链表是不是空,如果为空,无法进行操作,直接返回 nullif (head == null){ return null;原创 2021-11-10 14:52:25 · 323 阅读 · 1 评论 -
两分钟解决链表问题----反转一个链表
此题目为力扣题库的链表题目???? 文章目录:1️⃣.题目解析2️⃣.代码实现3️⃣.全部代码题目:????1️⃣.题目解析题目要求我们把链表反转,即把原来链表头是现在链表的尾,原来链表的尾是现在链表的头,我们可以定义一个前驱记录前一个结点的位置,一个 cur 遍历链表,实现链表反转即可 ????2️⃣.代码实现步骤一、判断链表是不是空,如果是空,链表无法进行反转,直接返回空对象if (head == null){ return null; }原创 2021-11-10 14:26:08 · 407 阅读 · 0 评论 -
几分钟解决链表问题---删除链表中等于给定值 val 的所有节点
???? 文章前提:本题为力扣题库链表题目----编号203???? 文章目录:1️⃣.题目解析2️⃣.代码实现3️⃣.全部代码题目:????1️⃣ 题目解析:我们看到题目需要删除链表中等于给定值 val 的所有节点,注意这里删除的是所有结点,既然涉及到删除元素,那么一定需要有一个前驱 prev 保存现有的结点位置,一个 cur 去遍历链表找需要删除的结点,具体如何用代码实现,下面展示:????2️⃣ 代码实现:步骤一、定义一个删除元素的方法:???? public ListNo原创 2021-11-10 11:27:23 · 491 阅读 · 0 评论 -
几分钟带你解决数据结构问题-------单链表(超详细)
????文章前提链表在数据结构中占据很重要的地位,本篇博客将从单链表的创建,以及操作单链表实现几种功能展开,下面正式开始但链表的讲解 ????????????????文章目录:1️⃣.链表的概念及其结构2️⃣.结点的创建3️⃣.单链表的创建4️⃣.单链表功能的实现5️⃣.单链表实现的全部代码1.链表的概念及其结构链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。链表的几种结构:????单向、带头、循环单向、带头、非循环单向、不带头、原创 2021-11-05 23:25:14 · 851 阅读 · 14 评论 -
数据结构---顺序表(Java实现)
???? 文章前言:????本篇博客围绕如何构建顺序表,以及如何使用顺序表实现增删查改等功能展开????❓ 首先我们需要先理解一个概念:线性表线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串...线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。????本篇博客主题:顺序表????原创 2021-10-31 17:45:57 · 621 阅读 · 0 评论 -
5分钟带你解决智力游戏-----汉诺塔问题
汉诺塔简介:????汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智游戏。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 ---摘自《百度百科》单独看这样一段话很难理解,我们用数学模型加以解释:????汉诺塔问题可以简化为如何把 A 柱上的 64 个盘子按照同样的大小顺序并且每次只原创 2021-10-20 17:23:43 · 5525 阅读 · 12 评论