- 博客(68)
- 收藏
- 关注
原创 【数一线性代数】026入门
在众多排序算法中,个人认为选择排序算法的思想最接近平时生活中的想法——每次选择数组中的最小元素,放在数组的前面。其实现也很简单,如果从细节去看,代码中的变量。编写函数,实现对顺序表的选择排序。
2024-10-06 23:04:55
565
原创 【数一线性代数】025入门
在众多排序算法中,个人认为选择排序算法的思想最接近平时生活中的想法——每次选择数组中的最小元素,放在数组的前面。其实现也很简单,如果从细节去看,代码中的变量。编写函数,实现对顺序表的选择排序。
2024-10-05 23:29:58
481
原创 【数一线性代数】024入门
在众多排序算法中,个人认为选择排序算法的思想最接近平时生活中的想法——每次选择数组中的最小元素,放在数组的前面。其实现也很简单,如果从细节去看,代码中的变量。编写函数,实现对顺序表的选择排序。
2024-10-04 23:17:31
494
原创 【数一线性代数】020入门
以上就是将链表中的奇数和偶数分开存放的代码实现,在分析问题的时候采用了分情况讨论的思路。该题中有很多小细节容易被忽略,如:始终将preA向后移动一步(这会导致当cur的值为偶数时,cur->next被默认为分配到链表A中)。但只要自建示例进行模拟,便能很清晰地得到正确的操作。此外将思路转化为代码也是重点,因此有必要将思路分析地十分详细,在多次练习后这种思路到代码的转化就会越来越轻松。
2024-09-30 21:41:41
627
原创 【数一线性代数】019入门
以上就是将链表中的奇数和偶数分开存放的代码实现,在分析问题的时候采用了分情况讨论的思路。该题中有很多小细节容易被忽略,如:始终将preA向后移动一步(这会导致当cur的值为偶数时,cur->next被默认为分配到链表A中)。但只要自建示例进行模拟,便能很清晰地得到正确的操作。此外将思路转化为代码也是重点,因此有必要将思路分析地十分详细,在多次练习后这种思路到代码的转化就会越来越轻松。
2024-09-29 21:56:46
613
原创 【数一线性代数】018入门
以上就是通过后序遍历计算二叉树的WPL的实现。类似于二叉树转中缀表达式(传递深度)和判断顺序存储二叉树是否是BST(传递前驱元素),本题在实现的过程中也构建了辅助工具函数来传递额外的参数,这种思想在二叉树的递归中非常常用。
2024-09-28 23:48:38
677
原创 【数一线性代数】017入门
以上就是通过后序遍历计算二叉树的WPL的实现。类似于二叉树转中缀表达式(传递深度)和判断顺序存储二叉树是否是BST(传递前驱元素),本题在实现的过程中也构建了辅助工具函数来传递额外的参数,这种思想在二叉树的递归中非常常用。
2024-09-27 23:39:27
630
原创 【数一线性代数】016入门
以上就是利用中序遍历判断顺序存储的二叉树是否为BST的实现,相较于先序遍历中每次传递min和max,以判断cur的值是否在(min, max)内;中序遍历只需以引用方式传递preV,判单cur的值是否大于preV即可。本题重点在于面对顺序存储的二叉树,通过结论实现基础操作,并合理运用解题。
2024-09-26 23:48:17
876
原创 【数一线性代数】015入门
以上就是通过中序遍历完成二叉树转中缀表达式的实现。本题重点在于中序遍历,在此基础上,又通过传递当前深度,来判断运算操作是否对应根节点。
2024-09-25 23:52:54
436
原创 【数一线性代数】014入门
以上就是通过中序遍历完成二叉树转中缀表达式的实现。本题重点在于中序遍历,在此基础上,又通过传递当前深度,来判断运算操作是否对应根节点。
2024-09-24 23:53:28
322
原创 【数一线性代数】013入门
在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。时,如果想找到更大元素,就需要向下或向右搜索;如果想找到更小元素,就需要向上或向左搜索。但如果要对时间消耗进一步优化,就需要考虑运用题中给出的特殊条件——本题重点在于在尽可能低的时间复杂度在扫描过程中满足。只要满足这两点,就可以在有序的二维数组中以。[n为二维数组的行数,m为二维数组的列数]
2024-09-23 23:57:50
1152
原创 【数一线性代数】012入门
在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。时,如果想找到更大元素,就需要向下或向右搜索;如果想找到更小元素,就需要向上或向左搜索。但如果要对时间消耗进一步优化,就需要考虑运用题中给出的特殊条件——本题重点在于在尽可能低的时间复杂度在扫描过程中满足。只要满足这两点,就可以在有序的二维数组中以。[n为二维数组的行数,m为二维数组的列数]
2024-09-22 23:38:40
1384
原创 【数一线性代数】011入门
以上就是利用中序遍历判断顺序存储的二叉树是否为BST的实现,相较于先序遍历中每次传递min和max,以判断cur的值是否在(min, max)内;中序遍历只需以引用方式传递preV,判单cur的值是否大于preV即可。本题重点在于面对顺序存储的二叉树,通过结论实现基础操作,并合理运用解题。
2024-09-21 23:46:06
1284
原创 【数一线性代数】010入门
以上就是通过定义三个指针,不断调整最小指针逐步进行扫描,以得出三数组构成三元组最小距离的过程。代码中使用了cmath头文件中的abs函数来计算绝对值。本题的核心在于分析简化三元组的距离公式,根据简化后的公式可以相对顺利地得出优化后的解题方法。此外(非重点),本篇代码还采用了一个优化的小技巧——尽量不在循环体内定义变量(变量d特地定义在了循环体之外),因为如果在循环中定义局部变量,每次循环迭代都会进行一次空间的分配和释放,多次重复的操作会使得代码性能有所降低。
2024-09-20 23:52:36
1136
原创 【数一线性代数】009入门
以上就是通过定义三个指针,不断调整最小指针逐步进行扫描,以得出三数组构成三元组最小距离的过程。代码中使用了cmath头文件中的abs函数来计算绝对值。本题的核心在于分析简化三元组的距离公式,根据简化后的公式可以相对顺利地得出优化后的解题方法。此外(非重点),本篇代码还采用了一个优化的小技巧——尽量不在循环体内定义变量(变量d特地定义在了循环体之外),因为如果在循环中定义局部变量,每次循环迭代都会进行一次空间的分配和释放,多次重复的操作会使得代码性能有所降低。
2024-09-19 23:42:24
930
原创 【数一线性代数】008入门
以上就是利用中序遍历判断顺序存储的二叉树是否为BST的实现,相较于先序遍历中每次传递min和max,以判断cur的值是否在(min, max)内;中序遍历只需以引用方式传递preV,判单cur的值是否大于preV即可。本题重点在于面对顺序存储的二叉树,通过结论实现基础操作,并合理运用解题。
2024-09-18 23:47:10
1114
原创 【数一线性代数】007入门
本题从实现角度看,实用性不大(好好的栈为什么要转成队列啊 x_x)。但通过本题可以更好地理解栈和队列的性质,此外本题所用到的思想还是比较有用的——两次序列反转得到正序序列(类似与用数组逆置实现数组循环左移的思路,明天会介绍一下)。while (1){cout << "请输入要执行操作(1.入队 2.出队 3.退出): ";int op;cin >> op;cout << "请输入入队元素: ";int t;cin >> t;// 执行push操作enqueue(t);
2024-09-17 23:41:33
769
原创 【数一线性代数】006入门
本题从实现角度看,实用性不大(好好的栈为什么要转成队列啊 x_x)。但通过本题可以更好地理解栈和队列的性质,此外本题所用到的思想还是比较有用的——两次序列反转得到正序序列(类似与用数组逆置实现数组循环左移的思路,明天会介绍一下)。while (1){cout << "请输入要执行操作(1.入队 2.出队 3.退出): ";int op;cin >> op;cout << "请输入入队元素: ";int t;cin >> t;// 执行push操作enqueue(t);
2024-09-16 23:41:11
775
原创 【数一线性代数】005入门
以上就是利用中序遍历判断顺序存储的二叉树是否为BST的实现,相较于先序遍历中每次传递min和max,以判断cur的值是否在(min, max)内;中序遍历只需以引用方式传递preV,判单cur的值是否大于preV即可。本题重点在于面对顺序存储的二叉树,通过结论实现基础操作,并合理运用解题。
2024-09-15 23:55:14
1116
原创 【数一线性代数】004入门
以上就是经典的快速排序,下面对比一下优化前后一趟扫描的过程(右侧为优化后):再看一下排序的整体过程(优化版):[红色代表元素已经处在最终位置。灰色表示此趟扫描选择的枢轴]
2024-09-14 23:53:01
1072
原创 【数一线性代数】003入门
以上就是经典的快速排序,下面对比一下优化前后一趟扫描的过程(右侧为优化后):再看一下排序的整体过程(优化版):[红色代表元素已经处在最终位置。灰色表示此趟扫描选择的枢轴]
2024-09-13 23:44:38
1737
原创 【数一线性代数】002基础
以上就是并查集的查找和合并操作的实现。此处的重点在于理解find函数路径压缩操作和具体的实现方法。而合并操作还可以继续优化——按秩合并,此处不再过多介绍。
2024-09-12 23:37:52
515
原创 【数一线性代数】001基础
以上就是并查集的查找和合并操作的实现。此处的重点在于理解find函数路径压缩操作和具体的实现方法。而合并操作还可以继续优化——按秩合并,此处不再过多介绍。
2024-09-11 23:35:29
386
原创 【408DS算法题】041进阶-并查集基本操作
编写函数,实现并查集的基本操作(查找、合并)。并查集中包含数据结构`parent`数组,存储每个结点的父结点。对于查找操作,可以通过递归找到当前结点的根结点,然后进行路径压缩——令当前结点的父结点为根节点,最后返回根节点。对于合并操作,只需要将两节点的根结点进行合并即可。
2024-09-10 23:33:09
298
原创 【408DS算法题】040提高-判断无向图是否是一棵树
对于一个无向图,判断它是否为一棵树需要满足两点条件:1. 从根结点可达其余所有结点2. 无环对于第一点,通过BFS/DFS进行遍历并记录结点的访问情况就可以得出;对于第二点,则需要在遍历的同时检查该结点的“子结点”(非“父结点”的邻居)是否都只会访问到一次。为实现这一点,还需要引入`parents`数组来记录图中每个结点的“父结点”。
2024-09-09 23:57:14
611
原创 【408DS算法题】039进阶-判断图中路径是否存在
对于给定的图G,设计函数实现判断G中是否含有从`start`结点到`stop`结点的路径。1.BFS的思路相对比较直观——从起始结点出发进行层次遍历,遍历过程中遇到结点`i`就表示存在路径`start->i`,故只需判断每个结点`i`是否就是`stop`。2.理解的图DFS版本的思想,首先需要根据递归的思想,推理出递归函数的作用——判断图中是否存在路径`cur->stop`,再将这一“功能”运用到遍历中,思路就会非常简单。
2024-09-08 23:56:42
920
原创 【408DS算法题】038进阶-图深度优先遍历DFS
设计函数实现对图的深度优先遍历。--此处因为涉及到递归,不能直接像BFS那样新建`visited`数组,否则每次递归都会独立创建一个`visited`数组。为此,设计了辅助函数来实现目标效果。
2024-09-07 23:58:28
369
原创 【408DS算法题】037进阶-图广度优先遍历BFS
设计函数实现对图的广度优先遍历。图的BFS和二叉树的BFS在大体思路上是相同的,但对于图需要额外考虑一点——结点是否已经被访问过。这是因为图不同于树,两点之间可以有着多条路径。
2024-09-06 23:57:52
637
原创 【408DS算法题】036基础-14年真题_求二叉树的WPL
二叉树的带权路径长度(WPL)是二叉树中所有叶结点的带权路径长度之和。给定一棵二叉树T ,采用二叉链表存储, 请设计求T的WPL的算法。--后序遍历、辅助工具函数传递深度
2024-09-05 10:22:19
807
原创 【408DS算法题】035进阶-17年真题_二叉树转中缀表达式
请设计一个算法,将给定的表达式树(二叉树)转换为等价的中缀表达式(通过括号反映操作符的计算次序)并输出。--中序遍历、根节点特殊处理
2024-09-04 23:51:45
515
原创 【408DS算法题】034进阶-22年真题_判断顺序存储二叉树是否是BST
以上就是利用中序遍历判断顺序存储的二叉树是否为BST的实现,相较于先序遍历中每次传递min和max,以判断cur的值是否在(min, max)内;中序遍历只需本题重点在于面对顺序存储的二叉树,通过结论实现基础操作,并合理运用解题。
2024-09-03 23:58:00
863
原创 【408DS算法题】033基础-判断二叉树是否是二叉排序树
二叉排序树:对于每个节点,其左子树中所有节点的值都小于当前结点的值,其右子树中所有节点的值都大于当前结点的值;左子树和右子树本身也是二叉搜索树。给定二叉树的根节点root,判断该二叉树是否是二叉排序树。
2024-09-02 16:51:38
833
原创 【408DS算法题】032基础-判断二叉树是否是完全二叉树
完全二叉树:除了最后一层之外,每一层的节点数都达到了最大值;最后一层的节点从左到右依次排列,没有空缺。给定二叉树的根节点root,判断该二叉树是否是完全二叉树。
2024-09-01 20:30:51
464
原创 【408DS算法题】031基础-判断二叉树是否是平衡二叉树
对计算二叉树高度函数进行修改,通过限定后的平衡二叉树高度,高效判断二叉树是否是平衡二叉树
2024-08-31 23:56:25
300
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人