![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PTA
文章平均质量分 61
NJU_ChopinXBP
矜持放荡,明媚忧伤,技术不宅,文艺俗咖
展开
-
#数据结构与算法学习笔记#PTA1:二分查找算法(C/C++)
2018.3.14L是用户传入的一个线性表,其中ElementType元素可以通过>、 == 、<进行比较,并且题目保证传入的数据是递增有序的。函数BinarySearch要查找X在Data中的位置,即数组下标(注意:元素从下标1开始存储)。找到则返回下标,否则返回一个特殊的失败标记NotFound。// BinarySearch.cpp: 定义控制台应用程序的入口点。...原创 2018-03-15 21:08:03 · 1513 阅读 · 0 评论 -
#数据结构与算法学习笔记#PTA12:二叉搜索树判断(C/C++)
2018.4.20这道题有两个思路,一是根据两个序列分别建二叉搜索树,再根据二叉树的判别方法判别两棵树是否为同一棵树;二是建立其中一棵二叉搜索树,将待检验序列的元素依次进行搜索,若为同一棵二叉搜索树,则每次在树中搜索所访问过的结点应当在序列该数搜索到之前都访问过。如对于3 1 4 2所建成的二叉搜索树T来说,将待检验序列3 4 1 2依次搜索,当搜索至2时,341三个结点应当都被访问过。而...原创 2018-04-20 23:21:19 · 403 阅读 · 0 评论 -
#数据结构与算法学习笔记#PTA13:平衡二叉搜索树的根 Root of AVL Tree(C/C++)
2018.5.2平衡二叉树(AVL Tree)是任意结点平衡因子BF(左右子树左右高度差)≤1的二叉搜索树。要想建成AVL树,需要在每一个结点插入时进行判断和调整。调整的方法有四种(左左单旋、右右单旋、左右双旋、右左双旋),四种方式分别根据结点插入时的相对结构判断,如下图Figure1的情况为左左单旋调整情况。本题要求根据输入顺序建一棵AVL树,并且返回其根节点。思路就是AVL树的基本操作...原创 2018-05-03 14:06:41 · 277 阅读 · 0 评论 -
#数据结构与算法学习笔记#PTA14:最小堆与最大堆(C/C++)
2018.5.3 本题要求建立一个最小堆,并且能从某个指定结点开始依次打印其父节点直到根节点。这道题可以说是近期写的最简单的题目了。最小堆实际上是一棵元素逐层增大的完全二叉树,根节点为元素最小值。利用vector进行存储,每一个新结点插入时,将当前index(注意不包含新加入结点)的父节点(index/2)与插入元素的元素值进行大小比较,从后往前依次循环比较,若当前结点比其父节点小,则...原创 2018-05-03 23:23:05 · 819 阅读 · 0 评论 -
#数据结构与算法学习笔记#PTA15:并查集+按秩归并+路径压缩(C/C++)
2018.5.4 昨天写完最小堆之后,一兴起看了一晚上的区块链,总算对炒得火热的区块链有了一些大致的了解。今天有点晚,明天会发一篇关于区块链的文章,欢迎各位与我交流探讨。这一题说的是,一个网络中有N台主机,当输入I的时候,对某两台主机进行网络连接;当输入C的时候,对两个主机是否连接进行检查;当输入S的时候,对整个网络的连接状态进行检查,并结束任务。本题主要考察并查集的知识,题目本身不难...原创 2018-05-05 00:30:07 · 327 阅读 · 0 评论 -
#数据结构与算法学习笔记#PTA16:完全二叉搜索树(C/C++)
2018.5.8题目的意思很简单,给定一个任意的输入序列,把这个序列建成一棵完全二叉搜索树(既是一棵完全二叉树,又是一棵二叉搜索树),并且层次遍历打印出来。但是实现起来却并不那么轻松,完全二叉树一般用数组存储比较方便,而二叉搜索树用链表存储比较方便。之前我们在《#数据结构与算法学习笔记#PTA10:层次遍历叶节点(JAVA)》中写到了如何利用队列将链表存储的二叉树进行层次遍历。因此最一开始...原创 2018-05-08 13:58:07 · 554 阅读 · 0 评论 -
#数据结构与算法学习笔记#PTA18:图(邻接表)+DFS(深度优先搜索)+BFS(广度优先搜索)(C/C++)
2018.5.22 上周解决完了树的大BOSS,这周正式进入图了。图根据边的性质可以分为有权图和无权图,有向图和无向图。无论哪一种图,都可以用邻接矩阵与邻接表两种数据结构表示,对于稠密图来说,邻接矩阵更方便一些,对于稀疏图来说,邻接表效率更高。图有两种遍历方法,深度优先搜索(DFS,Depth First Search)与广度优先搜索(BFS,Breadth First Search)。...原创 2018-05-22 16:55:47 · 576 阅读 · 0 评论 -
#数据结构与算法学习笔记#PTA17:哈夫曼树与哈夫曼编码 Huffman Tree & Huffman Code(C/C++)
2018.5.16最近一段时间忙于实验室各种项目和辅导员的各种杂活,间隔了半周没有耐下心学习。导师最近接了一个要PK京东方的项目让我来做总负责,确实是很惊喜了。责任心告诉我不能把工作做水了,但是还是尝试把实权移交给师兄们比较好。这道题可以说是树这块的压轴题了,无论是代码量还是思维难度都和其他题目不在一个档次。题目意思是给定一个带权的输入序列,和N个与带权输入序列元素相同的编码测试序列,若编...原创 2018-05-16 18:49:44 · 4336 阅读 · 0 评论 -
#数据结构与算法学习笔记#PTA19:拯救007基础版 Saving James Bond - Easy Version(Java)
2018.10.22简单重述一下,James Bond被困在直径15的湖心岛上,整个湖可以模拟成一个100*100的矩阵,湖上有可供跳跃的陆地点(其实是鳄鱼背),每次007有一个最大的跳跃半径maxdist,问007能否成功逃脱跳到岸上。这道题实际上是一道图题,但是却并不需要用邻接表或邻接矩阵建立一个图,只需要记录下所有可供跳跃的结点,把跳跃路径作为边,再进行一个简单的DFS,判断能够到达...原创 2018-10-22 17:03:41 · 502 阅读 · 0 评论 -
#数据结构与算法学习笔记#PTA11:先序遍历+中序遍历转后序遍历/二叉树非递归遍历/二叉树栈遍历(JAVA)
2018.4.18这道题说的是利用栈来模拟二叉树,通过栈的出入情况,模拟出这棵二叉树,并后序遍历打印这棵二叉树。这题关键点在于理解二叉树的非递归遍历,能够看得出入栈顺序就是二叉树的先序遍历序列,出栈顺序就是二叉树的中序遍历序列。理解了这点这道题就转换成已知先序遍历+中序遍历,打印二叉树的后序遍历的问题了。有两个思路:1.根据先序遍历和中序遍历先构建一棵二叉树,再后序遍历打印这棵树;2....原创 2018-04-18 12:17:17 · 921 阅读 · 0 评论 -
#数据结构与算法学习笔记#PTA9:同构二叉树(JAVA)
2018.3.30一段时间没用JAVA,担心手生了,这题特地用java来写一下。 题目注意事项在注释中已经写得比较清楚,这里应该要注意一下JAVA输入的注意事项,具体可以看一下这个链接:https://www.cnblogs.com/zhrb/p/6347738.html?utm_source=itdadao&utm_medium=referral主要注意两点:1.不要...原创 2018-04-04 15:32:05 · 323 阅读 · 0 评论 -
#数据结构与算法学习笔记#PTA2:顺序链表合并(C/C++)
2018.3.15本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。L1和L2是给定的带头结点的单链表,其结点存储的数据是递增有序的;函数Merge要将L1和L2合并为一个非递减的整数序列。应直接使用原序列中的结点,返回归并后的带头结点的链表头指针。// Add_two_List.cpp: 定义控制台应用程序的入口点。//本题要求实现一个函数,将两个链...原创 2018-03-15 21:41:07 · 314 阅读 · 0 评论 -
#数据结构与算法学习笔记#PTA3:在线处理算法求最大子列和,并返回最大子列和头尾元素(C/C++)(2004年浙大计科考研复试)
2018.3.17在线处理算法求最大子列和“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序,计算给定整数序列的最大子列和。思路是从左向右累加。当积累值大于结果值则更新结果值,当和为负数抛弃之前积累结果。// MaxSubsequence....原创 2018-03-17 15:44:48 · 411 阅读 · 0 评论 -
#数据结构与算法学习笔记#PTA4:分治算法求最大子列和(C/C++)
2018.3.17分治算法求最大子列和基本思想为二分分治并递归求解左子列最大和、右子列最大和、跨中线子列最大和,比较求出最大和。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。Now you are supposed to find the largest s...原创 2018-03-17 17:15:14 · 565 阅读 · 0 评论 -
#数据结构与算法学习笔记#PTA5:一元多项式的乘法与加法运算(C/C++)
2018.3.20加法挺简单的,乘法至今没有想到类似在线处理那样更好的算法,目前有几个思路:1.把M与N项多项式乘法看成M(M<N)个多项式加法,问题转换为多项式加法问题。2.逐项计算,并且依次进行插入,问题可以转换为顺序链表元素插入问题。3.总体计算,计算结束之后再按指数大小进行排序。目前采用的算法是算完再排序,一方面是几种思路复杂度差不多,另一方面是实现较简单,可读性...原创 2018-03-20 11:33:02 · 347 阅读 · 0 评论 -
#数据结构与算法学习笔记#PTA6:链表翻转升级版(C/C++)
2018.3.26输入一个乱序表,每个结点包含当前地址、值、下一地址。给定乱序表结点数N和翻转周期K,把输入的乱序表按照周期K进行翻转。注意几个测试点:1.小于周期K的尾巴不翻转,2.有不在链表上的多余输入结点,3.取最大值N=100000时运行时间不能过长。Given a constant K and a singly linked list L, you are supposed to...原创 2018-03-26 23:23:04 · 238 阅读 · 0 评论 -
#数据结构与算法学习笔记#PTA10:层次遍历叶节点(JAVA)
2018.4.9要求寻找一棵二叉树的叶节点,并且按从上到下、从左到右的顺序打印出来。题目难点在于如何层次遍历一颗二叉树,主要思想是利用队列层次遍历一棵树,先将根节点入队,每次出队时检查是否有左右子根节点,若有则子节点入队,直到队列为空。没有什么大坑。Given a tree, you are supposed to list all the leaves in the order of...原创 2018-04-09 22:52:16 · 302 阅读 · 0 评论 -
#数据结构与算法学习笔记#PTA7:出栈序列检验(C/C++)
2018.3.27Pop SequenceGiven a stack which can keep M numbers at most. Push N numbers in the order of 1, 2, 3, ..., N and pop randomly. You are supposed to tell if a given sequence of numbers is a p...原创 2018-03-27 21:13:32 · 413 阅读 · 0 评论 -
#数据结构与算法学习笔记#PTA8:实现一棵二叉搜索树(C/C++)
2018.3.28实现一个二叉搜索树,因为是一道函数题,题目之前已经给定了C语言裁判代码,因此直接用C语言实现。满足下面三个条件的二叉树为二叉搜索树:1.若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值2.若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值3.它的左、右子树也分别为二叉搜索树。主要包括前序、中序、后序遍历和几个操作函数:1. 函数I...原创 2018-03-28 22:37:24 · 241 阅读 · 0 评论 -
#数据结构与算法学习笔记#PTA20:六度空间(Java、C/C++)
2019.4.11更新:果然是系统后台问题,刚刚在新学期的题目集上再跑了一次,下面同样的Java代码不会再提示内存不足,可以直接过了(当初真是调试到崩溃找不到原因,看来是系统后台的问题)。2018.10.31这道图题看起来很复杂,其实是一个简单的BFS。只要用邻接表记录所有边和结点(这里用HashMap嵌套链表实现),对每一个点进行一次六层的BFS(关于BFS可以看 #数据结构与算法学...原创 2018-10-31 21:30:13 · 890 阅读 · 0 评论