数据结构-算法
文章平均质量分 54
数据结构及算法知识以及力扣刷题
喜羊羊zz
人间值得,未来可期
展开
-
双指针法的应用详解
目录前言1.判断链表是否有环2.查找链表中间的元素3.奇偶排序,前奇后偶4.删除排序链表的重复元素5.三数之和6.分割链表7.合并两个有序的数组8.两数之和—输入有序数组9.长度最小的子数组前言通常用在线性的数据结构中,比如链表和数组。指针其实就是数据的索引或者链表的结点。两个指针朝着左右两个方向移动,直到满足搜索条件。双指针可分为同向双指针、异向双指针、快慢指针、滑动窗口。根据需求选择双指针的模型,比如删除数组或链表中重复的元素,同向双指针(线性表前提是有序的);快慢指针一般用在链表中,比如原创 2022-03-04 18:03:03 · 1345 阅读 · 3 评论 -
深入了解Top-K问题
Top-K问题原创 2022-01-09 20:11:52 · 598 阅读 · 3 评论 -
数据结构 —七大排序算法(图文详细版)
七大排序算法原创 2022-02-08 22:06:34 · 4392 阅读 · 4 评论 -
数据结构-二叉排序树(图文详细版)
二叉排序树原创 2022-01-17 15:12:23 · 61332 阅读 · 3 评论 -
堆排序-时间复杂度
前言一,堆排序二,冒泡排序三,两者性能比较一,堆排序二,冒泡排序三,两者性能比较原创 2022-01-10 14:02:29 · 1913 阅读 · 2 评论 -
Java实现二叉树-前序,中序,后序三种遍历(递归+非递归)
一,前序二,中序三,后序原创 2021-12-28 09:57:02 · 3729 阅读 · 3 评论 -
反转链表详解版-Java
206题-反转链表给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]方法一:头插法新建一个大小和原链表完全相同的新链表,边遍历原链表,边在新链表将新建节点头插,返回新链表头节点public ListNode reverseList(ListNode head) { //判断边界条件 i原创 2021-11-02 22:38:26 · 247 阅读 · 0 评论 -
删除链表元素详解版(Java)
203题:移除链表元素给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。示例 1:输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]示例 2:输入:head = [], val = 1输出:[]示例 3:输入:head = [7,7,7,7], val = 7输出:[]1,一般方法:先判断头节点,若不是,向后寻找val节点,找到待删除节点前驱,再删除原创 2021-10-28 20:34:33 · 1442 阅读 · 2 评论 -
数据结构-二叉树最大宽度(Java实现)
二叉树最大宽度题目(力扣662题)给定一个二叉树,编写一个函数来获取这个树的最大宽度。树的宽度是所有层中的最大宽度。这个二叉树与满二叉树(full binary tree)结构相同,但一些节点为空。每一层的宽度被定义为两个端点(该层最左和最右的非空节点,两端点间的null节点也计入长度)之间的长度。解题思路代码实现...原创 2021-12-26 20:27:44 · 455 阅读 · 0 评论 -
数据结构-二叉搜索树转成递增顺序搜索树(Java)
二叉搜索树转成递增顺序搜索树题目(力扣897题)给你一棵二叉搜索树,请你 按中序遍历 将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。方法一:中序遍历后生成新的树1,2,代码实现 public TreeNode increasingBST(TreeNode root) { List<Integer> res = new ArrayList<Integer>(); //中序遍原创 2021-12-22 16:06:56 · 907 阅读 · 0 评论 -
Java-优先级队列(堆)实现
Java-优先级队列(堆)和堆排序实现一,优先级队列的概念优先级队列中,数据按关键词有序排列,插入新数据的时候,会自动插入到合适的位置保证队列有序。举个例子来说,一组整型数,如果使用优先级队列的话,不管队列之前放入的数据如何,后面添加进去的数据总会被按照升序或者降序排列,优先队列的头是基于自然排序或者Comparator排序的最小元素。如果有多个对象拥有同样的排序,那么就可能随机地取其中任意一个。当我们获取队列时,返回队列的头对象。二,优先级队列的方法优先级队列是比栈和队列更专用的结构,在多数情况下原创 2021-12-19 23:08:45 · 798 阅读 · 0 评论 -
数据结构-二分搜索树转双向链表(Java)
二分搜索树转双向链表题目思路代码实现原创 2021-12-17 12:41:46 · 1486 阅读 · 0 评论 -
数据结构-根据二叉树创建字符串(java)
根据二叉树创建字符串(力扣606题)题目你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。空节点则用一对空括号 “()” 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。思路1,通过先序遍历,用StringBuilder拼接大字符串2,括号问题当左树右树都空,可以省略括号当左树空,右树不空,不能省略括号当左树不空,右树空,可以省略括号代码实现 StringBuilder sb = new StringBuilder();原创 2021-12-15 22:23:26 · 568 阅读 · 0 评论 -
数据结构-寻找二叉树两节点的最近公共祖先(Java)
寻找最近公共祖先思路代码实现原创 2021-12-15 21:14:35 · 1607 阅读 · 0 评论 -
Java根据前序中序遍历构建二叉树
105题-从前序中序遍历构建二叉树题目给定一棵树的前序遍历 preorder 与中序遍历 inorder。请构造二叉树并返回其根节点。Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]Output: [3,9,20,null,null,15,7]示例 2:Input: preorder = [-1], inorder = [-1]Output: [-1]解题思路1,从前序找到根节点2,再从中序寻找该根节点索引,分左右两个区原创 2021-12-10 22:16:33 · 1034 阅读 · 1 评论 -
数据结构-判断对称二叉树(Java)
101题-判断对称二叉树题目给定一个二叉树,检查它是否是镜像对称的。解题思路代码实现原创 2021-12-10 21:01:24 · 450 阅读 · 0 评论 -
二叉树-判断另一棵树的子树(Java)
572题-另一棵的子树题目给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子树。示例 1:输入:root = [3,4,5,1,2], subRoot = [4,1,2]输出:true示例 2:输入:root = [3,4,5,1,2,null,null,原创 2021-12-10 11:25:13 · 199 阅读 · 0 评论 -
数据结构-判断平衡二叉树(java)
110题-判断平衡二叉树题目:解题思路代码实现 public boolean isBalanced(TreeNode root) { if(root == null){ return true; } // 使用Map存储每个出现节点的高度 // 求当前的左右子树高度 Map<TreeNode,Integer> map = new HashMap<>();原创 2021-12-09 11:37:49 · 467 阅读 · 0 评论 -
数据结构—判断一棵二叉树是否是完全二叉树(java)
判断一棵二叉树是否是完全二叉树一,完全二叉树的三种节点完全二叉树有右树必有左树,,节点编号和满二叉树一一对应1,度为2的节点有n个2,度为1的节点只能有1个3,度为0的节点有n个二,具体思路1,分两个阶段,第一阶段所有节点都有左树右树,当遇到节点只有左树,或是没有子树切换第二阶段2,该阶段所有节点权全为叶子节点,遇到一个节点有子树就不是完全二叉树3,使用层序遍历,借用队列求解三,代码实现public class IsCompleteTree { public boolean i原创 2021-12-07 12:25:26 · 1640 阅读 · 0 评论 -
稀疏矩阵相乘运算-数据结构课程设计(C语言)
稀疏矩阵相乘运算一、目的1.了解稀疏矩阵相乘运算特点2.知道稀疏矩阵存储,创建,显示,转置方法二、设计要求1.问题描述利用稀疏的特点进行存储和计算可大大节省存储空间,并实现稀疏矩阵相乘运算2.需求分析(1)用三元组顺序表表示稀疏矩阵,用来实现两个矩阵相乘运算(2)使用三元组表示稀疏矩阵的输入形式,以阵列形式列出运算结果(3)先让用户输入矩阵的列数和行数,给出的两个矩阵行,列数是否和所要求的相对应(4)列出菜单项,用户根据菜单进行所有操作三、概要设计1.主界面设计(1)创建矩阵,输原创 2021-12-03 14:43:38 · 3412 阅读 · 0 评论