数据结构
文章平均质量分 75
世_生
妥妥的一枚小白,喜欢记录学习笔记。
展开
-
并查集(C++)
班级总人数10人,现在需要不10人分别添加到三个兴趣小组中,每个人只能参加一个兴趣小组。:由于篮球小组人比较少,某班级决定解散,成员合并到游泳小组。:某班级要创建三个兴趣小组,分别是象棋、游泳、篮球。主要解决的是元素分组的问题。象棋小组:{2,4,6,7}游泳小组:{0,1,5,8}这里就可以使用到并查集。篮球小组:{3,9}原创 2024-01-05 20:46:23 · 459 阅读 · 0 评论 -
155.最小栈-力扣(LeetCode)
目录55.最小栈-力扣(LeetCode)正确题解优化题解1优化题解255.最小栈-力扣(LeetCode)????155.最小栈-力扣(LeetCode)题目描述:设计push、pop、top、getMin,函数,并且可以在时间复杂度为O(1)的情况下找出最小值错误的思路:给定一个变量,来记录最小值,这种想法是错误的,我们应该要更全面的考虑问题。当我们入栈{6,5,4,3,2,1}时,每次记录最小值的变量随着每次入栈而改变,当数据全部入栈,记录最小值的变量就为1,如果在不删除数据的情况下,可以原创 2021-09-05 13:34:15 · 400 阅读 · 2 评论 -
排序4-堆排序与海量TopK问题
目录前言一、堆排序.堆排序算法二、海量TopK问题前言一、堆排序(1)堆是一颗完全二叉树(2)堆的每个节点的值都大于或等于其左右孩子节点称为大堆(3)堆的每个节点的值都小于或等于其左右孩子节点称为小堆堆:具备着上面条件的就称之为堆我们可以看出大堆的堆顶是最大值,小堆的堆顶是最小值。从堆中需要注意:跟节点一定是最大(小)者。堆的结构:拿上面大堆做例子:如果将大堆层序遍历存入数组,则满足以下关系左孩子坐标=2父亲坐标+1右孩子标=2父亲坐标+2我们讲这个堆结构,其目的就是为了堆排序原创 2021-05-09 13:49:47 · 151 阅读 · 7 评论 -
队列的介绍与实现(详解)
目录一、什么是队列二、队列的结构三、队列的实现先创建队列结构体1.初始化队列操作2.队列存在,则销毁队列3.队列清空4.判断队列是否为空5.返回队列队头元素6.返回队列元素的个数7.插入8.删除一、什么是队列队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表二、队列的结构队列是一种先进先出(First In First Out)的线性表,简称FIFO。队头:允许删除的一端称为队头队尾:允许插入的一端称为队尾假设队列是q=(A1,A2,A3·····An),那么A1为队原创 2021-04-22 17:24:25 · 208 阅读 · 1 评论 -
栈的介绍与实现(详解)
目录一、什么是栈二、栈的结构三、栈的实现先创建栈的结构体1.初始化栈,建立一个空栈2.若栈存在,则销毁-栈的销毁3.栈的清空4.栈是否为空5.返回栈顶元素6.返回栈中元素的个数7.进栈8.出栈一、什么是栈栈(stack)是限定仅在表尾进行插入和删除的线性表。二、栈的结构栈顶(top): 允许插入和删除的一端称为栈顶栈底(bottom):另一端为栈底空栈:不含任何元素数据的栈称为空栈栈又称为后进先出(Last In First Out)的线性表,简称LIFO结构进栈:栈的插入操作,叫作进栈,也原创 2021-04-22 00:00:41 · 710 阅读 · 4 评论 -
数据结构—带头双向循环链表(拿捏)
目录前言一、带头双向循环链表介绍创建链表尾插尾删头插头删查看查找销毁在pos前面插入删除pos节点总结前言请耐心看,这是个好东西。一、带头双向循环链表介绍先看图:与单链表不同,单链表在插入和删除一个节点时都需要找到前一个节点,这时候就遍历.但带头双向循环链表不同,它就像一个⚪环,可以无缝连接.这就是其好处.创建链表先创建一个头节点struct ListNode* ListCreate(){ struct ListNode*head =(struct ListNode*) mall原创 2021-04-17 18:39:19 · 141 阅读 · 1 评论