
数据结构
文章平均质量分 68
piolet0016
一个跌跌撞撞探索的小萌新,blog记录的是自己学的一些东西(也方便自己以后复习呀),如果有误,还请大佬批评指正
展开
-
有序线性表 力扣26. 删除有序数组中的重复项
【代码】有序线性表 力扣26. 删除有序数组中的重复项。原创 2023-12-01 09:06:44 · 628 阅读 · 0 评论 -
线性表 力扣27. 移除元素
利用两个指针扫描原数组,i是工作指针,j是新指针。如果i指向位置是val,i向后移动,j不动;如果不是,i的值赋给j。原创 2023-12-01 08:52:01 · 596 阅读 · 0 评论 -
线性表 力扣67. 二进制求和
public://需要扫描的长度取两个字符串中最大值//翻转两个字符串//count表示是否进位i++) {//count 上递增,如果i还小于字符串a的长度,看字符串a当前位置是不是1,如果是1,a.at(i) == '1'返回1,则count递增1,否则递增0,下面一条语句同理'1' : '0');//count表示当前位计算结果,如果count % 2 == 0,说明要么计算结果是0,不用进位,当前位就是0,要么计算结果是2,如果是1,要么计算结果是3,要进位;原创 2023-12-01 08:17:40 · 639 阅读 · 0 评论 -
浙大数据结构之09-排序1 排序
给定N个(长整型范围内的)整数,要求输出从小到大排序后的结果。本题旨在测试各种不同的排序算法在各种数据情况下的表现。原创 2023-08-29 09:35:32 · 607 阅读 · 0 评论 -
浙大数据结构第八周之08-图9 关键活动
假定一个工程项目由一组子任务构成,子任务之间有的可以并行执行,有的必须在完成了其它一些子任务后才能执行。“任务调度”包括一组子任务、以及每个子任务可以执行所依赖的子任务集。比如完成一个专业的所有课程学习和毕业设计可以看成一个本科生要完成的一项工程,各门课程可以看成是子任务。有些课程可以同时开设,比如英语和C程序设计,它们没有必须先修哪门的约束;有些课程则不可以同时开设,因为它们有先后的依赖关系,比如C程序设计和数据结构两门课,必须先学习前者。原创 2023-08-23 18:30:13 · 628 阅读 · 1 评论 -
浙大数据结构第八周之08-图8 How Long Does It Take——拓扑排序
第i行实际上给出的是一条有向边的信息,包括这条边的起点,终点和权值,要求在对这些事件进行拓扑排序后找到完成这系列事件所需时间,暂未涉及到关键路径问题,不要想复杂。Earliest的更新:Earliest[i]表示完成节点i所需的最早时间单位,但因为存在不同的依赖关系,所以在若干前置事件完成后必须从中挑出一个最大的。第i行实际上给出的是一条有向边的信息,包括这条边的起点,终点和权值。用邻接矩阵建图应该也可以,不过锻炼能力还是用邻接表建图。原创 2023-08-21 09:57:06 · 709 阅读 · 1 评论 -
最小生成树 浙大数据结构第八周之08-图7 公路村村通
现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。原创 2023-08-19 15:05:09 · 732 阅读 · 0 评论 -
浙大数据结构第七周之07-图6 旅游规划
有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。原创 2023-08-13 06:41:56 · 472 阅读 · 0 评论 -
浙大数据结构第七周之Saving James Bond - Hard Version
麻了,搞了一星期,在Dijkstra和BFS反复横跳,最后其实是BFS + Dijkstra的组合拳模式解决。设置path[n](path[i]表示节点i的上一级节点),这样可以利用堆栈回溯。(一):数据初始化,将读入的鳄鱼按从近到远排序。相比于简单版本,要求找到最短路。排过序,用Dijkstra。原创 2023-08-12 11:43:15 · 582 阅读 · 0 评论 -
浙大数据结构第七周之07-图4 哈利·波特的考试——Dijkstra和Floyd算法
(一)Dijkstra方法算法实现:dist[v]:表示从起点s到当前点v最短路径的长度path[w]:表示到w顶点的上一个父顶点(1)假设用带权的邻接矩阵G表示有向图,先初始化该邻接矩阵,其中与起点s之间有边的顶点i的G[s][i]初始化为权值,无边初始化为最初设定好的最大值INFINITY,path先全部初始化为-1(2)将起点s加入集合S(S表示存放已找到最短路径的顶点)后,在T(T = V(V表示全体顶点)- S)里找与s之间距离最小的顶点v,将其加入S,原创 2023-08-06 14:54:19 · 596 阅读 · 0 评论 -
浙大数据结构第六周之06-图3 六度空间
六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图1所示。“六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多社会学家努力追求的目标。然而由于历史的原因,这样的研究具有太大的局限性和困难。原创 2023-08-03 17:47:25 · 209 阅读 · 0 评论 -
浙大数据结构第六周之Saving James Bond - Easy Version
因为只要找到一条路径即可,而一定是从岛开始找,我选择了BFS(其实DFS也可以),用BFS搜索时,如果弹出的是岸就可以退出循环打印Yes,如果循环结束也没有找到打印No。相比之下,BFS到没那么难实现,真正难的倒是判断能不能在两个节点之间跳跃,一开始没注意岛的半径,然后又没有考虑跳上岸的条件。(1)建图:建图的标准是能不能在两个节点之间跳跃,而判断能不能在两个节点之间跳跃的关键是将节点分为三类:岸,鳄鱼,岛。①:从岸边开始跳:注意岸是有半径的。③:在鳄鱼节点之间跳。原创 2023-08-01 16:28:26 · 483 阅读 · 0 评论 -
BFS与DFS:浙江大学第六周数据结构之06-图1 列出连通集
给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N−1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。原创 2023-07-27 21:08:57 · 387 阅读 · 0 评论 -
浙大数据结构第五周之05-树9 Huffman Codes
如果是1就向右边建树,每个字母编码建树完毕将当前current指针指向位置的权重设置为-1,这样在以后建树过程中如果发现下一层的权重是-1,说明之前一个字母的编码是当前字母编码的前缀,就不满足;(3)接着每次从小顶堆里弹出最小和次小,注意弹出的过程不止是删除,还要重构小顶堆,重构过程是下滤,构成一棵二叉树,再把这棵二叉树放进小顶堆,如此循环直到小顶堆里只有一个指针,那个指针即是哈夫曼树根节点。(2)检查学生输入时,检测的是左/右孩子的weight,不是current的weight。(一)实现哈夫曼编码。原创 2023-07-25 21:52:03 · 394 阅读 · 0 评论 -
第五周之05-树8 File Transfer
考察并查集,用类似树的思想构建,不过Set[i]表示序号为i的节点的根节点,而根节点的绝对值则表示这个集合里有多少节点,每个集合只有一个根节点,先给一个正整数N,表示的电脑编号从1~N,然后给出三种操作:检查两台电脑有没有连接,连接两台电脑,结束,最后还要看这1~ N台电脑连成了几个。并的操作是将小集合往大集合里面并,小集合根节点的值修改为大集合的根节点下标,大集合根节点加上小集合根节点里的值。查的操作利用了路径压缩,如果当前节点是根节点,直接返回,否则就以当前节点递归查找并返回查找到的值。原创 2023-07-22 19:00:26 · 86 阅读 · 0 评论 -
浙大数据结构第五周之05-树7 堆中的路径
将一系列给定数字依次插入一个初始为空的小顶堆H[]。随后对任意给定的下标i,打印从H[i]到根结点的路径。原创 2023-07-21 20:06:50 · 453 阅读 · 0 评论 -
浙大数据结构第四周之04-树7 二叉搜索树的操作集
其中BinTree函数Insert将X插入二叉搜索树BST并返回结果树的根结点指针;函数Delete将X从二叉搜索树BST中删除,并返回结果树的根结点指针;如果X不在树中,则打印一行Not Found并返回原树的根结点指针;函数Find在二叉搜索树BST中找到X,返回该结点的指针;如果找不到则返回空指针;函数FindMin返回二叉搜索树BST中最小元结点的指针;函数FindMax返回二叉搜索树BST中最大元结点的指针。原创 2023-07-20 21:01:02 · 237 阅读 · 0 评论 -
浙大数据结构第四周之04-树6 Complete Binary Search Tree
2. 假设把树按从左到右、从上到下的顺序依次编号,根节点为0,则从根结点root = 0开始中序遍历,root结点的左孩子下标是root*2+1,右孩子下标是root*2+2。因为是中序遍历,所以遍历结果与中序数组in中的值从0开始依次递增的结果相同,即in[t++](t从0开始),将in[t++]赋值给level[root]数组。3. 因为树是按从左到右、从上到下的顺序依次编号的,所以level数组从0到n-1的值即所求的层序遍历的值,输出level数组即可。递归的终止条件是下标比节点数目大。原创 2023-07-19 20:12:19 · 1359 阅读 · 0 评论 -
浙大数据结构第四周之04-树5 Root of AVL Tree
要特别注意的是,如果插入一个节点导致树不平衡了,我们要找到从下往上第一个不平衡的地方进行调整,调整完整个树就平衡了,而不是说要返回到最上面进行调整。的把握,准确求出树高是旋转的关键,本题实现是直接存储在树节点中,通过直接访问节点与计算左右子树高度最大值再加1求得当前节点高度。15这里是一定平衡的(左右都是空),返回给11,11这里肯定也是平衡的,返回给9,但9就不是平衡的了。调整完以后,再返回到9的父节点,这个时候9的父节点再进行判断,以此类推。在每次旋转后都需要求出两个“交换位置”节点的各自树高。原创 2023-07-18 20:48:43 · 462 阅读 · 0 评论 -
浙大数据结构之04-树4 是否同一棵二叉搜索树
浙大数据结构之04-树4 是否同一棵二叉搜索树原创 2023-07-16 20:43:54 · 606 阅读 · 0 评论 -
浙大数据结构第三周之03-树3 Tree Traversals Again
浙大数据结构第三周之03-树3 Tree Traversals Again原创 2023-07-16 10:55:54 · 974 阅读 · 0 评论 -
浙大数据结构第三周之03-树2 List Leaves
浙大数据结构第三周之03-树2 List Leaves原创 2023-07-14 21:55:39 · 1190 阅读 · 0 评论 -
浙大数据结构第三周之03-树1 树的同构
浙大数据结构第三周之03-树1 树的同构原创 2023-07-13 21:27:46 · 470 阅读 · 0 评论 -
浙大数据结构第二周之02-线性结构4 Pop Sequence
浙大数据结构第二周之02-线性结构4 Pop Sequence原创 2023-07-11 22:13:25 · 493 阅读 · 0 评论 -
浙大数据结构第二周之02-线性结构3 Reversing Linked List
浙大数据结构第二周之02-线性结构3 Reversing Linked List原创 2023-07-10 22:00:36 · 623 阅读 · 0 评论 -
浙大数据结构第二周02-线性结构2 一元多项式的乘法与加法运算
浙大数据结构第二周02-线性结构2 一元多项式的乘法与加法运算原创 2023-07-08 19:31:09 · 624 阅读 · 0 评论 -
浙大数据结构第二周02-线性结构1 两个有序链表序列的合并
浙大数据结构第二周02-线性结构1 两个有序链表序列的合并原创 2023-07-06 20:03:07 · 493 阅读 · 0 评论 -
浙大数据结构第一周01-复杂度3 二分查找
浙大数据结构第一周01-复杂度3 二分查找原创 2023-07-05 21:26:00 · 345 阅读 · 0 评论 -
浙大数据结构第一周Maximum Subsequence Sum
浙大数据结构第一周Maximum Subsequence Sum原创 2023-07-05 21:01:55 · 330 阅读 · 0 评论 -
浙大数据结构第一周最大子列和问题
浙大数据结构第一周最大子列和问题原创 2023-07-04 21:51:15 · 378 阅读 · 0 评论 -
浙大数据结构与算法一些有意思的理论基础题
从浙大网课数据结构里选了一些理论基础题(其实就是我一开始做错的)原创 2023-05-01 20:56:10 · 1221 阅读 · 0 评论