- 博客(16)
- 收藏
- 关注
原创 leetcode刷题笔记之104. 二叉树的最大深度
设计迭代应该从最小的元素开始设计,比如这题,在设计时应该以一个最简单的树开始设计,就是比较左右树哪个长,从而获得树的最大深度。基于这样再设计迭代。大彻大悟了,代码的原理是计算子树的左右子树长度,取其中最长的那个。
2025-08-03 23:26:42
156
原创 leetcode刷题笔记之101. 对称二叉树
逻辑是这样的的,方法的参数是左右节点,先判断左右节点是不是都为空,都为空即为对称,再看是否只有一个,只有一个则不对称。为什么一开始选择两个递归,感觉要判断左右的子树一不一样只要先进行一个中序排列,再看一不一样就行了,但是没想到的是中序并不能完整展示一个树的结构,见上述案例。结果还是求助了deepseek,直接采用递归比较左右子树,妙啊,用一个递归比较左子树的左节点和右子树的右节点,只要不一样直接返回0,妙啊!理想状态是将树一分为二,一个中序排列,另一个镜像中序排列,这样来看是不是一样,结果遇到以下例子。
2025-08-03 19:02:20
321
原创 leetcode刷题笔记之94. 二叉树的中序遍历
不然编译器会在全文检索导致出错。还学习了简单的递归实现,包括设置结束的判定,在本题中则为线遍历完左节点后再遍历右节点,直到没有节点为止。迭代方法使用栈来模拟递归的过程,显式地维护调用栈。对树这块不太熟悉,所以直接参考了depseek。学习了树的使用,包括左右节点,val获取值等。学习了递归的使用,python中递归一定要用。同时还有一种通过迭代实现的方法。描述为中序遍历一个二叉树。因为调用的是类里的一个。
2025-07-31 10:24:33
143
原创 leetcode刷题笔记之70. 爬楼梯
题目看似很难,没有仍和头绪,但只要输入1,2,3,4,5,6简单推到一番便能发现是一个斐波那契数列,此时任务变得非常简单。不能拆开,因为这两步是同时进行的,若拆分成两步就出错了,无论谁前谁后。有的时候要把抽象问题复杂化,可能通过简单的枚举就能发现一个规律。学习到了*原子操作(即同时赋值)*这个概念。
2025-07-31 03:06:16
230
原创 leetcode刷题笔记之 21. 合并两个有序链表
当l1和l2都有的时候才会继续循环,结束循环时证明已经有一个跑完了,这时候另一个可能有剩所以需要添加后面一行。是通过head去进行target后续链表的操作,最后在访问target即可。-1没啥意义,反正最后返回都是从target的next开始返回的。逻辑不难,主要是练习对listnode(链表的操作)学习了之前接触较少的链表操作。
2025-07-31 02:50:20
116
原创 华为OD机试 - 流浪地球
时刻1启动(1,3.5,7)(其中1,3被2关联启动,5,7被6关联启动);后面出现的启动引擎会和前面已经启动过的重复,不影响结果,可以优化以提升速度。时刻2启动(0,4)(其中0被1,7关联启动,4被3,5关联启动);N代表部署发动机的总个数,E代表计划手动启动的发动机总个数。至此所有发动机都被启动,最后被启动的有2个,分别是0和4。T代表发动机的手动启动时刻,P代表此发动机的位置编号。接下来共E行,每行都是两个数字T和P,中间有空格。第二行N个数字,中间有空格,以回车结束。时刻0启动(2,6);
2025-07-30 23:28:02
380
原创 leetcode刷题笔记(二)之88. 合并两个有序数组
在列表中间插入元素是 O(m+n) 操作,因为需要移动后面所有元素。最坏情况下(nums2所有元素都需要插入到nums1开头),这两个操作会被执行 n 次所以总时间复杂度是 O(n × (m+n)) = O(mn + n²),当 m≈n 时就是 O(n²)1被题目思维定势了,说是要在nums1上修改,我就真的在nums1上insert pop了,实则向复杂了,元素的定位反而变得复杂,应该和标注答案一样最后赋值就行了。我像的是2里面有小于1的就插到前面但是时间复杂度是O((M+N)Log(M+N))
2025-07-30 16:48:39
299
原创 leetcode刷题笔记
通过将循环过的数字保存进去,这样可以智通过以此循环就能找到对应的两个数字。给个数组和目标,求数组中那两个数可以组成目标。非常方便,相当于自动定义一个计数器了。一般都想到两个for循环暴力解。标准答案给到一个hash表。
2025-07-30 12:15:26
135
原创 springboot开发笔记——三层架构简述
控制器是应用程序的入口点,负责处理用户的HTTP请求,并返回响应。它通常负责接收用户的输入,调用业务逻辑层(Service)的方法,并返回视图或数据。:Controller调用Service层的方法来执行具体的业务逻辑处理。Service层可以是一个或多个,具体取决于业务需求。:Controller不直接与Mapper交互,Mapper层的职责是数据访问,Controller通过Service层间接与Mapper层交互。
2025-01-01 01:28:29
526
原创 pat乙级1013 数素数(C++)
pat乙级1013 数素数题目思考代码注释题目PAT令 Pi表示第 i 个素数。现任给两个正整数 M≤N≤104,请输出 PM到 PN的所有素数。输入格式:输入在一行中给出 M 和 N,其间以空格分隔。输出格式:输出从 PM到 PN的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。输入样例:5 27输出样例:11 13 17 19 23 29 31 37 41 4347 53 59 61 67 71 73 79 83 8997 101 103
2020-12-29 15:36:48
1252
2
原创 pat乙级1012 数字分类
pat乙级1012 数字分类题目思考代码遇到的问题用到的方法题目PAT给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字:A1= 能被 5 整除的数字中所有偶数的和;A2= 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n1−n2+n3−n4⋯;A3= 被 5 除后余 2 的数字的个数;A4= 被 5 除后余 3 的数字的平均数,精确到小数点后 1 位;A5= 被 5 除后余 4 的数字中最大数字。输入格式:每个输入包含 1 个测试用例。每个测试用例先给
2020-12-28 16:21:46
911
原创 pat乙级 1011 A+B和C
pat乙级 1011 A+B和C题目思考代码遇到的问题总结题目pat给定区间 [−231,231] 内的 3 个整数 A、B 和 C,请判断 A+B 是否大于 C。输入格式:输入第 1 行给出正整数 T (≤10),是测试用例的个数。随后给出 T 组测试用例,每组占一行,顺序给出 A、B 和 C。整数间以空格分隔。输出格式:对每组测试用例,在一行中输出 Case #X: true 如果 A+B>C,否则输出 Case #X: false,其中 X 是测试用例的编号(从 1 开始)。
2020-12-27 20:27:22
193
1
原创 pat乙级1009说反话
pat乙级1009说反话题目思考代码代码1代码2遇到的问题用到的方法题目pat给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。输出格式:每个测试用例的输出占一行,输出倒序后的句子。输入样例:Hello World Here I Come输出样例:Com
2020-12-26 14:51:19
150
原创 pat乙级1008 数组元素循环右移问题
pat乙级1008 数组元素循环右移问题题目代码备注题目链接: pat1008.代码#include <iostream>using namespace std;int main(){ int n, m, i, j; float N=n/2; i = 0; j = 0; cin >> n; cin >> m; if(m>n)//存在m>n的情况 { m=m%n;
2020-12-23 19:26:25
159
原创 pat乙级1007 素数对猜想 如何解决超时问题
素数对猜想题目代码备注题目pat1007代码#include <iostream>#include <math.h>using namespace std;int main(){ int n; cin>>n; int a[100000],b[10000]; int i,k,g,p; k=0; g=0; p=0; for(i=1;i<=n;i++)//定义a数组 {
2020-12-23 15:49:30
1212
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅