导航

2022年6月21日

摘要: ##实现并查集需要什么? 1.一个存储每个元素父亲的容器 2.一个查询每个元素祖先的函数 3.一个为元素添加祖先的函数 ##操作步骤 ###1.首先对pre容器进行初始化操作 使每个元素的祖先都是它自己,或者都初始化为-1 for(int i = 0 ;i <= pre.size()-1 ; i + 阅读全文

posted @ 2022-06-21 23:21 wuqiu 阅读(15) 评论(0) 推荐(0) 编辑

2022年6月7日

摘要: ##线段树的定义 线段树是一颗二叉搜索树,它的每一个节点都有两个子节点,每一个节点存储着一个区间的有关信息(可以是区间和,也可以是区间的最大值等) 下图所示为 arr 数组区间和在线段树上的表示方法。 ##线段树的实现 使用数组存储二叉树的形式对线段树进行存储,在图中我们使用红色圆圈标记每一个节点的 阅读全文

posted @ 2022-06-07 15:52 wuqiu 阅读(45) 评论(0) 推荐(0) 编辑

2022年6月3日

摘要: ###需要的数据结构 vector<vector<int>> //用来存储结果 vector<int> //用来存储每一层节点值 queue<Node*> //一个节点的队列 ###计算方法 ###二叉树的层序遍历 /** * Definition for a binary tree node. * 阅读全文

posted @ 2022-06-03 23:49 wuqiu 阅读(108) 评论(0) 推荐(0) 编辑

摘要: 给定一个正整数 n,返回 连续正整数满足所有数字之和为 n 的组数 。 示例1: 输入: n = 5 输出: 2 解释: 5 = 2 + 3,共有两组连续整数([5],[2,3])求和后为 5。 示例2: 输入: n = 9 输出: 3 解释: 9 = 4 + 5 = 2 + 3 + 4 ###设从 阅读全文

posted @ 2022-06-03 23:34 wuqiu 阅读(203) 评论(0) 推荐(0) 编辑

摘要: ###弗洛伊德算法进行预处理 如果 i → k && k → j 那么就有 i → j ,弗洛伊德算法时间复杂度为 n^3。具体做法为将集合中每一个数拿出,再双重循环遍历起点 i 和重点 j ,如果 i 到 j 之间可以通过 k 相连接,则 i 到 j 之间可达。 ###双重循环求解 从集合中拿出一 阅读全文

posted @ 2022-06-03 00:12 wuqiu 阅读(89) 评论(0) 推荐(0) 编辑

摘要: ###删除节点 对于一个要被删除的节点来说,它会处于两种状态,一种是左子树右子树至少有一个是NULL,另一种是左子树右子树都存在。 对于有NULL的节点来说,删除它很简单只需要将其删掉并用子节点替换它的位置即可。 if(root->right == NULL){//右子树为空 tmp = root; 阅读全文

posted @ 2022-06-03 00:00 wuqiu 阅读(286) 评论(0) 推荐(0) 编辑

2022年6月2日

摘要: ###回溯方法 对每一根火柴,在正方形的每一条边上都放一下,如果正方形剩余的长度够用的话,就再放下一根,直到每一根火柴都放过。(预处理过,如果全部放入不是正方形的话,不会进DFS)如果不够用的话,就取出来,然后放进下一条边里面。时间复杂度非常的高,因为每一根火柴都可能在四条边的任意一条上 时间复杂度 阅读全文

posted @ 2022-06-02 00:44 wuqiu 阅读(347) 评论(0) 推荐(0) 编辑

摘要: 需要注意的地方 选择的方法是以一支链表作为结果链,另一只加上去,这就要注意结果链比另一支短的情况,在相加的同时,我定义了一个 before 用来记录当前节点的前一个节点的指针,因为相加操作结束时,结果链节点指针是NULL,不便于将第二条链接上去。 ##两数相加 给你两个 非空 的链表,表示两个非负的 阅读全文

posted @ 2022-06-02 00:15 wuqiu 阅读(53) 评论(0) 推荐(0) 编辑

2022年6月1日

摘要: 理解题意关键 如果说一个数的因子只有 2 3 5 , 那么反过来想,这个数一定是由若干个 2 3 5 相乘得到的,所以每一次只需要找出当前所有已知丑数中由2 3 5 相乘可以得到的最小的数即可。 也就是说每一个丑数,都可以由之前的丑数乘 2/3/5 得到。 具体做法 设置三个指针,初始他们都指向第一 阅读全文

posted @ 2022-06-01 23:46 wuqiu 阅读(103) 评论(0) 推荐(0) 编辑

2022年5月31日

摘要: ##生成一个随机数 //初始化操作 mt19937 gen(random_device{}()); uniform_int_distribution<int> dis(1, n);//确定生成的范围 int x = dis(gen);//x即为生成的随机数 ##string类 与C风格的字符串不同, 阅读全文

posted @ 2022-05-31 22:16 wuqiu 阅读(44) 评论(0) 推荐(0) 编辑