- 博客(18)
- 收藏
- 关注
原创 Heap / Priority Queue
使用的是小根堆 每当队列中超过k个元素时,就删除多余的元素,此时队列中留下的是k个最大元素,那么堆顶就是要求的整体元素中的第k个大的元素。检查是否为空 pq.empty();返回 true 表示为空。获取元素个数 pq.size();插入元素 pq.push(x);获取堆顶元素 pq.top();删除堆顶元素 pq.pop();📌 priority_queue 常见操作。
2025-02-24 08:29:14
296
原创 【图Graph 题目 C++实现】
/如果没有cycle 只会遍历一次public:if(!i++){if(!未访问的节点:当 dfs 访问一个未访问的课程时,首先将其加入 visited,表示该节点正在处理。访问过程中:如果再次遇到 visited 中的节点,意味着存在循环依赖,返回 false(检测到环)。成功访问完成:从 visited 中移除该课程,并加入 cycle,表示该课程已经成功处理并可安全使用。
2025-01-24 05:46:29
720
原创 回溯[backTracking]
子集和组合属于一类问题排列属于单独一类问题,要用visited[i]看是否访问过元素,不过当无重复元素可以重复选时也用不到visited[i]
2025-01-09 15:22:22
632
原创 链表递归中的返回值问题
因为 return head只会执行一次对于序列1 → 2 → 3 → 4 → 5,将1,2,3,4均入栈,因为不符合第一个判断条件,当执行到5时,发现满足该条件,所以跳出递归,返回值为5所在的节点然后继续执行栈中的节点,此时不再执行所以最终执行完的cur一直都是5,cur一直没有变过。
2024-12-06 07:46:00
128
原创 【C++实现滑动窗口】
不断的调节子序列的起始位置和终止位置,从而得出我们要想的结果细节:对于窗口左右指针,是一个左闭右开的状态滑动窗口技术通过移动窗口的左右边界来高效地解决很多数组和字符串问题。它避免了重复计算,通常可以将时间复杂度从 O(n^2) 降低到 O(n)。滑动窗口的核心在于如何正确移动窗口的左右边界,并根据问题的要求进行必要的计算。
2024-08-05 10:50:57
983
原创 【求完全二叉树的节点个数(优化后的递归全过程)】
完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。输入:root = [1,2,3,4,5,6]时间复杂度:O(log n × log n)空间复杂度:O(log n)输入:root = [1]输入:root = []时间复杂度:O(n)空间复杂度:O(n)按上述题目所给示例1。
2024-03-26 23:30:14
909
原创 csp202009-1称检测点查询(C++)
题目背景2020 年 6 月 8 日,国务院联防联控机制发布《关于加快推进新冠病毒核酸检测的实施意见》,提出对“密切接触者”等八类重点人群“应检尽检”,其他人群“愿检尽检”。问题描述某市设有 n个核酸检测点,编号从 1到n ,其中 i号检测点的位置可以表示为一个平面整数坐标
2022-02-25 08:59:35
949
原创 csp202112-1序列查询
提交结果如下:自己的第一次上手,开始记录一下做第一道题的坑。第一遍做的时候完全按照题意的顺序,写了两个for循环,导致运行超时;后来便从例子出发,找规律,发现通过N来确定整组序列的大小,确定了起点和终点。i=2,3,4,对应f(i)为1,1,1;即2,3,4是位于序列A的2和5之间;i=5,6,7,对应f(i)为2,2,2;即5,6,7是位于序列A的5和8之间;这样利用一个for循环解决了i从0到A序列最后一个值,还有A序列最后一个值到N之间未比较,需要作类似上述操作,但不需要循环,一次相加就
2022-01-26 19:20:50
356
原创 Java反射机制
话不多说,直接上代码。前提为Person.javapackage reflection;public class Person { public String idNo="110";// 身份证号 public String name="Crystal";// 姓名 public Integer age=20;// 年龄 public String sex="女";// 性别 public Boolean isMerried=false;// 是否已婚 private Person(
2021-12-13 00:03:19
410
原创 数据结构绪论(参考《大话数据结构》
程序设计 = 数据结构 + 算法数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合数据其实就是符号,而且这些符号必须具备两个前提,即可输入到计算机中和能被计算机程序处理数据元素:是数据的基本单位。如猪,牛,羊是畜类的数据元素数据项:是数据不可分割的最小单位数据对象:是性质相同的数据元素的集合,是数据的一个子集数据结构(D,S)可分为逻辑结构和物理结构逻辑结构:指数据对象中数据元素之间的相互关系,可分为——集合结构,线性结构,树形结构.
2021-03-06 12:06:07
181
原创 二叉树的遍历
递归遍历先序遍历先根节点,再遍历其左子树,右子树void PreOrderTraversal(BinTree BT){ if(BT){ printf("%d",BT->Data); PreOrderTraversal(BT->Left); PreOrderTraversal(Right); }}左图访问顺序为ABDFECGHI中序遍历左子树->根->右子树void InOrderTraversal(BinTree BT){ if(B..
2021-02-19 00:16:42
670
2
原创 二叉树学习笔记
概念二叉树:一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树特点是每个结点最多只能有两棵子树,且有左右之分。当集合为空时,称该二叉树为空二叉树。在二叉树中,一个元素也称作一个结点满二叉树(完美二叉树): 除最下面一层全为叶节点,其他层每个节点都有两个儿子完全二叉树:对有n个结点的二叉树按从上到下,从左到右的顺序进行编号(编号为i的节点与满二叉树中编号为i节点位置相同)。如下图所示,J再满二叉树中的位置为10,K位置为11,故下列编.
2021-02-12 19:39:49
820
原创 数据结构之树(浙大版数据结构)
树用途:有效率地查找查找分为静态查找和动态查找;静态查找:没有插入和删除操作,只有查找A.顺序查找时间复杂度为O(n)//前提typedef struct LNode* List;struct LNode{ ElementType Element[MAXSIZE]; int Length;};//数组中存放的元素下标从1开始int SequentialSearch(StaticTable *Tbl,ElementType K){ Tbl->Element[0]=K;
2021-02-10 16:11:51
216
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人