- 博客(9)
- 收藏
- 关注
原创 用数组模拟链表 acwing 826.单链表
使用数组模拟链表为什么要这么做而不是使用结构体加指针或者直接用stl中的list其一 new运算符很慢很慢 如果使用常规的链表 大概率是会超时的其二 使用数组去模拟链表 更能深入理解两者的性质总结一下就是提速和加深理解要注意的是 这个知识点是非常重要的 不是说学着模拟一下就够了这种静态链表要比动态链表更考验思路 并且在后面的图论中 基本是使用数组模拟的链表进行操作的 可以说 这是后面算法的一个基础。
2023-11-08 18:22:03
129
1
原创 acwing 802.区间和
find做的事情就是构建一个数组a使得a的下标与alls的下标能进行对应 然后a中存储的是alls值所对应的原区间的相应下标内的值。所以 得二分查找 再构建一个数组 它的下标与这个数组的下标相对应 但是值是存的该数组中存的下标所对应的原本数组的值(有意义的值)注意的是 这里说的是a的下标与alls的下标对应 不一定要完全一样(前面的例子是完全一样 但是可以根据需求做一些修改)要开几个30万+1的数组 存放所有要用的下标alls 、映射后的有意义的数组a[]、a[]的前缀和数组s[]for(int i=0;
2023-11-07 19:53:57
125
原创 平衡二叉树
/先把左孩子和左孩子的右孩子进行左旋转 变成LL问题。//先把右孩子和右孩子的左孩子进行右旋转 变成RR问题。//先把左孩子和左孩子的右孩子进行左旋转 变成LL问题。//先把右孩子和右孩子的左孩子进行右旋转 变成RR问题。//再将当前点和左孩子进行右旋转 得到结果。//再把当前点与右孩子进行左旋转 得到结果。//再将当前点和左孩子进行右旋转 得到结果。//再把当前点与右孩子进行左旋转 得到结果。//将B的右孩子更新为A (B翻上去)//将B的左孩子更新为A (B翻上去)如果每次都去遍历计算深度就有点……
2023-10-01 22:44:46
75
原创 网的邻接矩阵表示法以及对于邻接矩阵表示法的DFS遍历
cout << "下标:" << i << " 字符" << G.Vexs[i] << endl;cout << "输入边信息:(起始顶点、结束顶点、权)" << endl;//找到这个顶点在顶点表中的下标。cout << "从"<<first<<"处深度优先遍历图G" << endl;if (visited[i] == 0) // 存在未访问的顶点。
2023-09-24 00:50:59
162
1
原创 STL自定义排序类型二三事
仿函数类通常用于容器(如 `std::set`)的构造时指定排序规则,而 Lambda 表达式和函数回调适用于需要在排序时指定规则的情况,例如 `std::sort` 函数。创建一个自定义的仿函数类,该类必须包含一个 `operator()` 函数,以定义元素的比较规则。创建一个可调用的函数,然后将该函数的指针传递给支持自定义排序规则的函数,例如 `std::sort`。仿函数是一种用户自定义的数据类型,它允许我们将函数的行为封装到对象中,并通过对象的方式来调用这些行为。
2023-09-22 17:28:09
319
原创 哈夫曼树哈夫曼编码全实现
*是左孩子 0进栈 是右孩子 1进栈*///我的HFM_table中是从0开始存的。// 将0或1添加到哈夫曼编码中。//每个结点的双亲、左右孩子的数组下标。//最后得到的结果肯定是一样的 (两者一起变化 对于同一种树下的编码解码出的东西是不会有问题的)//左右子树可以互换位置(得到的结果可能与推理时画的不一样 左右孩子的对应关系不同什么的)//第二步:找出当前森林中最小的两棵树,创建新树,并让原来的两个树作为新树的孩子。//由哈夫曼树的构造过程得知,n个权重结点构造出的哈夫曼树具有2*n-1个结点。
2023-09-22 01:46:22
94
原创 使用栈实现中序遍历树
IsEmpty(S))//如果p不为空(即有结点)且 栈里还有未访问的结点。//需要一个指针记录p为空时的上一个结点 用于出栈。void LDR_Stack(BiTree& T)//使用栈完成中序遍历。//去访问它的左子树。//让指针p指向根结点。else//如果没有结点 回去访问根。if (p)//如果有结点。//第一步:访问左孩子。//第二步:访问根结点。//第三步:访问右孩子。//第一步:访问左孩子。//第二步:访问右孩子。
2023-09-18 23:31:12
210
原创 使用c++ stl库 实现王卓老师数据结构课上病毒匹配算法 KMP解法
cout << "检测样本DNA:" << resultPair.first << "\t匹配的病毒:" << resultPair.second << endl;//m长度的病毒串去比较n长度的人类串 问题在于 一条病毒串有很多种情况(DNA循环结构)// 使用pair来表示匹配的样本DNA和匹配的病毒。//可以返回一个vector<int>类型 传入的是一个HString类。//匹配成功或者特殊情况 继续算下一个位置的next值。//然后就是从这个胶合出的串去 取出原病毒串长度的模式串。
2023-09-16 02:20:22
164
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人