- 博客(30)
- 收藏
- 关注
原创 浙大陈越数据结构-09-排序1 排序
有两个点超时了,做一点优化看看,增加一个标志,当没有发生交换时,就说明数据已经有序,可以停止了。依旧超时。在加一点优化,每次循环判断最后一次交换的位置,下次交换到上一轮最后一次交换的位置即可。还是超时,冒泡排序时间复杂度为O(n^2),可能是太高了,再试试其他几个排序方法。
2023-05-23 10:07:39 151
原创 浙大陈越数据结构-08-图8 How Long Does It Take
从队列中依次取出每个节点,依次处理从该节点开始的每个活动,将每个活动指向的结束节点的入度减一,判断结束节点的最后时间与起始节点+活动持续时间的关系,如果小于,就更新最后时间。最后再判断结束节点的入度是不是为0,如果是0,那么就将其放入队列。当退出后,判断是否已经处理完了所有节点,如果处理的节点数小于总结点数,说明有环存在,无法完成。首先使用邻接表去存储整个图,每个节点包含入度、出度、从该节点出发的所有活动(边),最后完成时间。活动(边)包含:开始节点、结束节点、持续时间、指向下一个活动的指针。
2023-05-17 15:55:53 164
原创 浙大陈越数据结构-08-图7 公路村村通
在最小堆中选择最小的边,判断终点是否在图中,不在的话就将终点收进来并将终点的所有与外界相连的边收进来。如果收进来的点个数小于所有点的个数,说明图不是连通的,返回-1.不需要存储最小生成树的图,只需要统计出所用的花费即可。一直到收进来的点等于所有点个个数或者最小堆已空。根据题意是稠密图,使用邻接矩阵区域存储整个图。从一个点开始,将它的所有边放到最小堆中。从一个点开始向外扩展使用prim算法。使用最小堆去选择下一条边 【优先队列】
2023-05-17 11:15:22 233
原创 浙大陈越数据结构-07-图4哈利·波特的考试
/如果被收录进去了,那么就不再继续。因为下面有些点的相邻点是已经被收录进去的点。//收集已经被收录进去的节点。
2023-05-14 20:56:46 200
原创 浙大陈越数据结构06-图2 Saving James Bond - Easy Version
【代码】浙大陈越数据结构06-图2 Saving James Bond - Easy Version。
2023-05-11 09:53:30 51
原创 浙大陈越数据结构-06-图1 列出连通集
由于这个题需要按从小到大的顺序访问,如果使用邻接表的话,在存储边的时候需要按照节点大小进行存储,会比较麻烦,所以这道题使用邻接矩阵是比较方便的。
2023-05-10 11:46:13 93
原创 浙大陈越数据结构-03-树3 Tree Traversals Again
可以注意到,push的顺序是前序遍历的顺序,使用一个stack进行模拟,输出的顺序就是中序遍历的顺序,通过前序遍历和中序遍历的顺序,就可以得到一个确定的二叉树。这里可以先把二叉树建立起来后再使用后序遍历进行输出,也可以直接利用三种顺序之间的规律来进行输出。这里是使用后一种方法。
2023-05-02 16:12:42 79
原创 浙江大学数据结构(陈越)02-线性结构2 一元多项式的乘法与加法运算
【代码】浙江大学数据结构(陈越)02-线性结构2 一元多项式的乘法与加法运算。
2023-04-27 20:15:37 77
原创 剑指 Offer 06. 从尾到头打印链表 C++四种方法
当不允许改变链表的结构时,可以想到使用栈来存储数据,栈有先入后出的特性,链表头部的元素最后出,链表最后的元素最先出。首先最容易想到的方法是遍历整个链表,将值都存在一个数组中,然后再将数组反转后输出。时间复杂度是O(n)当使用栈可以时,也可以使用递归来完成这道题,但是当链表节点数很大时,会有溢出的风险。第二种方法就是将整个链表先翻转,然后再输出。
2023-04-24 11:16:29 397 1
原创 剑指 Offer 03. 数组中重复的数字 C++题解
那么当拿到一个没有排序的数组时,我们从0开始遍历,当下标为i的元素等于i时,我们遍历下一个,当下表为i的元素不等于i时,假如等于m,那我们去访问下标为m的元素,当下标为m的元素等于m时,说明找到一个重复的元素;当下标为m的元素不等于m时,我们将下标为i的元素和下标为m的元素换位置,此时下标为m的元素等于m;为了降低时间复杂度,可以使用一个哈希表来存放已经遍历的元素,当访问一个元素时,首先去哈希表里查看是否有相同的元素已经被访问过了,如果有则说明该元素的重复的,如果没有,则将该元素存放到哈希表中。
2023-04-23 10:23:43 69
原创 浙江大学数据结构(陈越) Maximum Subsequence Sum答案
使用了在线处理算法,测试结果完全正确。#include <iostream>using namespace std;int MaxSubseqSum4(int *A,int N,int *B){ int MaxSum=0,ThisSum=0,i,num=0; *(B+1)=*A; *(B+2)=*(A+N-1); for (i=0;i<N;i++) { ThisSum += *(A + i); num+=1; .
2022-03-21 10:17:07 920
原创 华南理工大学2022年1月自然辩证法概论考场回忆
一、辨析下面问题并简单说明理由(每小题10分,共40分)1、理论可以让我们的观察更加敏锐2、观察经验与理论发生不一致时,是理论错了3、经验的可重复性是获得客观知识的必要条件4、系统的功能由环境决定二、材料分析题(每小题30分,共60分)1、波普尔科学发展模式(科学从问题开始)2、生态自然观...
2022-01-06 10:29:20 1923 3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人