- 博客(56)
- 收藏
- 关注
原创 Tlias智能学习辅助系统(三)
Mapper方法我们上文已经弄好了,直接调用即可,将数据放到List<Map<String,Object>>list中。接下来的操作是主要功能是。
2025-12-27 01:15:20
598
2
原创 Vue工程化
最后将应用实例app挂载到‘#app’上。我们现在把这段代码放到,我们的main.js文件里我们和官方文档有所不同的就是,用了链式编程,创建应用实例后立马添加组件立马挂载。
2025-12-15 13:50:46
1057
原创 Tlias智能学习辅助系统(二)员工管理
本文详细介绍了员工管理系统的开发实现过程,主要包括以下核心功能: 员工列表查询:通过GET请求接收查询条件,返回分页数据和员工信息列表,包括创建数据库表结构和测试数据。 新增员工:通过POST请求接收JSON数据,实现员工基本信息和经历的双表插入,使用@Transactional进行事务管理。 文件上传:使用MultipartFile处理文件上传,实现本地存储和防止文件名冲突。 员工删除:支持单条和批量删除,同时删除员工基本信息和经历记录。 员工更新:实现查询回显和修改功能,包括动态SQL更新和事务管理。
2025-12-12 00:23:56
731
1
原创 Tlias智能学习辅助系统(一)
(1)创建SpringBoot工程,并引入web开发起步依赖、mybatis、mysql驱动、lombok(2)检查设置选择你的JDK版本和对应的语言级别将文件编码格式全部换成UTF-8将项目结构更改成如图检查pom.xml中相关依赖是否配置好再到DataGrip中建立需要的数据库再回到idea中将application.properties删掉,换成application.yml我们进行文件配置。
2025-12-01 21:59:43
669
原创 C++算法 堆排序
下沉函数:(除了比较自己和子节点,还要比较那个子节点更优,也就是三个节点互相比较,谁赢继承权在谁手上),如果我的左儿子在数组范围内并且比当前获得继承权,如果有儿子在数组范围内并且比当前继承权的人更优那么他获得,最后,如果继承权节点和不是我自己,那么我就移交它,和继承节点交换位置,继续下沉。//排序,将根节点与最后一个元素交换位置,这样能保证队尾永远是最大的,再将交换过去的元素进行下沉,放到他该在的地方,反复操作,最后就排好序了。堆的元素插入:我们需要将要插入元素查到堆的尾部,再进行一个上浮操作。
2025-11-09 13:24:13
826
原创 C++算法 基数排序
优点:由于不需要元素间的比较,在排序范围有限或者元素有特定的顺序时,可能比比较型排序算法更有效 可以更容易排序有固定宽度的数字序列,如:电话号码,身份证。因为我们根据每一位分配到桶中时,桶是有序的,因此桶的分配是正序的,我们收集的时候从最前面的桶开始收集,因此小的在前大的在后,我们根据第二位进行。从所有元素最低位开始遍历,根据所选取的位数的值对每个元素进行分配,分配到对应的桶中。O(d(n+r)),其中d是数字位数,n是待排序的数量,r是基数。1.获取待排序元素的最大值,并确定其位数。
2025-11-07 17:25:09
233
原创 滚动数组(空间优化)
在遇到我们不需要使用前面几行的数据时,我们可以使用滚动数组,就是在两行之间来回交替的数组。在「杨辉三角」中,每个数是它左上方和右上方的数的和。,返回「杨辉三角」的第。你可以优化你的算法到。
2025-10-25 19:07:22
199
原创 最大字符串配对数目(哈希表实现)
我们将第 0 个字符串与第 2 个字符串匹配,因为 word[0] 的反转字符串是 "dc" 并且等于 words[2]。- 我们将第 1 个字符串与第 3 个字符串匹配,因为 word[1] 的反转字符串是 "ca" 并且等于 words[3]。- 我们将第 0 个字符串与第 1 个字符串匹配,因为 words[1] 的反转字符串 "ab" 与 words[0] 相等。反转字符串后cnt[s]++表示当前字符串期待的反转形式。当我们遇到反转字符串后,成功配对,ans+=cnt[s]
2025-10-10 19:01:41
192
原创 leetcode省份数量
本文介绍了如何计算城市连接矩阵中的省份数量。省份定义为直接或间接相连的城市集合。给定n×n的邻接矩阵isConnected,使用深度优先搜索(DFS)算法遍历所有相连城市:1)初始化访问标记数组;2)对每个未访问城市执行DFS,标记所有连通城市;3)每次完成DFS计数一次。算法时间复杂度O(n²),空间复杂度O(n)。示例1输出2,示例2输出3。该解法与LeetCode 547题相同,通过DFS高效统计连通分量数目。
2025-10-02 16:29:27
238
原创 C++数据结构 (图)邻接矩阵模板
本文展示了一个用C++实现的图类(Graph),采用邻接矩阵存储结构。该图类包含构造函数、析构函数、添加边(addEdge)和打印邻接矩阵(printGraph)等方法。构造函数初始化二维数组表示顶点间的边,初始值为-1(inf);addEdge方法设置指定顶点间的边权重;printGraph输出整个邻接矩阵。示例代码创建了5个顶点的图,添加了7条带权边并打印矩阵。该实现简洁地展示了图的基本存储和操作方式。
2025-09-27 20:32:14
127
原创 Anaconda常用命令
conda create -n 环境名 python=版本。conda env remove -n 环境名。conda activate 环境名。可以在envs_dirs中找到环境。
2025-09-26 18:23:42
184
原创 二叉搜索树中的众数
【摘要】本文介绍了一种在含重复值的二叉搜索树(BST)中查找众数的算法。采用中序遍历,利用BST的有序特性,统计连续相同值的出现次数。通过维护当前值、计数器和最大频率,在一次遍历中即可找出所有众数。算法时间复杂度O(n),空间复杂度O(1)(不考虑递归栈),满足进阶要求。示例表明,对于输入[1,null,2,2]输出[2],输入[0]输出[0]。关键点在于中序遍历过程中动态更新频率统计,避免使用额外空间存储所有节点值。
2025-09-25 20:08:20
278
原创 将有序数组转换为二叉搜索树
(1)题目所给数组已按升序排列索引越大的数就大,我们要生成一个左右平衡,那么我们可以让每个节点的左子节点存小的数,根节点存中间的数,右子节点存较大的数。(3)我们先实现递归,先找到数组的中间节点,赋值给新节点,左节点从l,mid-1中找到自己的中间节点,右节点同理。(2)首先我们需要创建一个函数来实现这个创建数的功能,我们需要有两个指针限制数组范围。(4) 我们再设置递归的结束条件,当l>r的时候说明数组已经用完了,返回NULL即可。[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。
2025-09-25 14:08:52
300
原创 最大二叉树
题目要求我们构建一棵树,输入一个数组,要将该数组的最大值作为根节点,最大值的左边选择一个最大值作为左子节点的根节点,右边同理。- [3,2,1,6,0,5] 中的最大值是 6 ,左边部分是 [3,2,1] ,右边部分是 [0,5]。- [3,2,1] 中的最大值是 3 ,左边部分是 [] ,右边部分是 [2,1]。- [2,1] 中的最大值是 2 ,左边部分是 [] ,右边部分是 [1]。- [0,5] 中的最大值是 5 ,左边部分是 [0] ,右边部分是 []。- 空数组,无子节点。
2025-09-21 10:00:29
373
原创 层数最深叶子节点的和(深度优先搜索)
(2)我们知道最大深度后,还需要在遍历一次这颗树,当节点为最大深度时,加进sum。首先我们想递归出口,当root为NULL时说明树为空返回0,如果最大深度等于当前节点深度时,则返回当前节点的值,如果不是最大深度,则返回左右子节点找到的最大深度的值的和。首先我们先选择递归出口,当节点为空时则结束递归,每次递归时都判断深度是否为最大深度,每次往下递归,就将深度加1,最终遍历完整颗树后,得出最大深度。题目需要我们求出树最深处的值的和,我们就应该使用深度优先搜索,来找到树的最大深度。给你一棵二叉树的根节点。
2025-09-20 18:36:13
599
原创 从根到叶的二进制数之和(霍纳法则)
对树上的每一片叶子,我们都要找出从根到该叶子的路径所表示的数字。每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。题目数据保证答案是一个。给出一棵二叉树,其上每个结点的值都是。这样的话我们的时间复杂度为O(n^2)而如果我们使用霍纳法则进行求解则为。我们都知道二进制转十进制的计算为。时间复杂度为O(n)
2025-09-20 15:24:11
334
原创 士兵队列训练问题(队列)
某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的向小序号方向靠拢,继续从头开始进行一至二报数。,以后从头开始轮流进行一至二报数、一至三报数直到剩下的人数不超过三人为止。共有N行,分别对应输入的新兵人数,每行输出剩下的新兵最初的编号,编号之间有一个空格。本题有多个测试数据组,第一行为组数N,接着为N行新兵人数,新兵人数不超过5000。
2025-09-13 09:16:48
683
原创 leetcode 每日温度(栈)
我们需要两个容器,一个容器用于存储距离,一个容器存储索引用于模拟栈(当栈为空时存入索引,当得到该索引的结果后,将其弹出)。(2)开始遍历每天的温度,当栈为空时存入索引,当得到该索引的结果后存入ans,将其弹出。最后得到每一个温度的结果。(1)我们先将结果容器初始化都为0,如果有更大温度的存入结果,没有更大温度的就不用改变。天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用。,表示每天的温度,返回一个数组。
2025-09-09 20:03:01
228
原创 leetcode有效的括号(栈)
因为栈有先进后出的特性,所以当我们判断括号的顺序是否正确时,我们可以使用栈,我们将左括号的顺序存入栈中,当需要匹配右括号时也需要倒序。,判断字符串是否有效。
2025-09-08 22:43:46
176
原创 翻倍以链表形式表示数字(递归)
我们创建一个int val用于存储得到的进位值,将地址传给前一位帮我们计算进位值。(1)看到这道题我首先想到能不能做一个函数模拟十进制的进位,于是我们定义一个doDouble(ListNode* head,int* cap)函数来完成我们数字翻倍并进位的操作,其中head是给定链表的头节点,cap是存储该向下一位进位多少。(4)接下来到我们的主函数中,我们还需要创建一个val存储进位值,如果val==0说明没有进位,当前这个head就是头节点,不等于0我们则需要闯进新的头节点。
2025-09-08 09:08:36
783
原创 虚拟头节点
做这道题时如果我们用正常的链表遍历,需要考虑头节点和尾节点的特殊情况,因为我们要删除链表中的一个元素时我们需要它的前驱节点,当我们需要删除头节点时,头节点的前驱节点为空所以需要特殊考虑。但我们如果使用一个虚拟头节点(他作为头节点的前驱节点)那样我们就不需要特殊考虑,只需要从头到尾遍历即可。,请你删除链表中所有满足。给你一个链表的头节点。
2025-09-07 10:26:11
209
原创 leetcode 二进制链表转整数
用链表表示二进制,我们只能从高位向低位读取,我们将我每次得到的结果乘一次二就相当于二进制向左移一位,左移一位后再加上链表中存储的二进制相应位数的值,最终可得结果。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。二进制数 (101) 转化为十进制数 (5)请你返回该链表所表示数字的。所以最后sum=101=5;给你一个单链表的引用结点。
2025-09-06 15:17:40
388
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅