- 博客(34)
- 收藏
- 关注
原创 day 10 贪心算法
改进:容器使用了list,list底层是链表实现的,比起vector能减少时间复杂度。饼干从大的开始利用,优先满足胃口大的;饼干从小的开始利用,优先满足胃口小的;感觉加油站这题做的很晕。按照区间末端进行排序。
2024-08-20 13:40:59 1162
原创 day 9 回溯算法
优化后的比之前的在叶子结点少递归一层。在排序candidates后,碰到target<0的情况直接结束本层的遍历,后面没遍历到的也不用遍历了。1.目标数n一直在随i的加入减小,如果目标数n已经<0,那么剪枝。即path中的数已经大于目标数了。利用数组去重,因为题目的数值范围小,所以可以尽量使用。剪枝优化:(对每层循环遍历的范围进行了缩小)2.对for循环i的遍历范围进行缩小。也可以不用st数组去重。
2024-08-08 15:12:59 478
原创 day 8二叉树
我觉得这个还有点难理解,突然不明白为什么中序了,不明白递归了。左递归到最深层,pre从最深层/最小值开始。还要记得if条件语句里面的pre加条件不为空。解法2:不用记录在数组中,可以遍历的时候就判断,不过还是要利用有序性的特性。方法2:(不用数组记录,记录上一个节点,遍历过程中直接进行比较)利用二叉搜索树的特性,通过中序搜索得到数组,验证是否是递增的。二叉搜索树的特殊性:节点左右孩子分别小于,大于该节点。解法3:直接记录上一个节点,比较两个节点对应的值。方法3:(中序迭代法)迭代法:(层序遍历)
2024-08-01 20:53:39 356
原创 day 7 二叉树H`1
自己写的:(其实暗含的有终止条件,因为我都加了if条件判断了,只要不满足就不会执行if后的语句,而且主要函数是void类型,走到函数整体结尾就结束了。前序遍历求树的深度,后序遍历求树的高度。深度是从根节点出发计算,高度是从叶子结点出发开始计算。与求深度相似,用前序。
2024-07-29 13:38:07 187
原创 day 6 二叉树
判断收获的地方的时候,是这个节点的左右子节点都为空的时候,并且注意是叶节点到根节点。如果节点数是1,那深度就是1,但是如果节点不是1,就要注意最短一定不是1。1.确定递归函数的参数和返回值。3.确定单层递归的逻辑。递归法:(后序遍历)
2024-07-25 11:48:42 306
原创 计组设计十六位运算器实验感想总结
如果有什么思路想法之类的,我身边的高手,就会进行动手尝试,验证是否正确,总之动手能力就是掰掰这弄弄那,动起来。1.在进行实验初始开始,就感觉到很大阻力,就是学习一个新的东西一样,不知道应该怎么办。就开始在网络上搜集资料,不懂啥就搜啥,跟探索新世界一样,让后再和同学交流一下,大概知道怎么个弄法。4.控制信号一样那里,芯片中控制信号是高电平有效,数据的输入是低电平有效。当然这一点短时间是无法改变的,不这些都是不能突然改变的,但是我意识到了现在,就可以着重加强这些方面的锻炼。实验结束后来点纯粹虚的感想。
2024-06-14 00:01:42 306
原创 web 实验二css页面布局设计总结
除此之外,我觉得写一个简历页面也是一个不小的工程了,对于刚学的学生我来说,刚开始的时候十分恐惧,觉得对如何做一个简历一无所知,对未知的事物就会产生极大的恐惧。但是一直自以为比别人强,装作比别人强的样子,但是到了有竞争比拼的时候,就感觉力不从心。可以设置一个空div,用来清除浮动,以免影响后续的元素布局。后代选择器会选择 #mlth_font 内部的所有 元素,不管它们的层级关系有多深。padding 是指从margin往外的距离,不是和其他盒子之间的距离是padding。
2024-05-25 17:35:32 314
原创 代码随想录 day6 哈希表
1.使用数组,集合(set,主要是unorder_set,无序,无重复)做哈希表。哈希表一般用来快速判断一个元素是否出现在集合里。2.unorder_set的用法。
2024-04-08 22:54:41 442
原创 代码随想录 day2 双指针思想 与模拟
3.对这样一个数组进行排序,先变小在变大,本身有一定的顺序。那么可以用双指针,从两边开始进行判定,再单独开一个数组,存放判定后的值。5.用vector定义一个二维数组,vector<vector<int>> map(n,vector<int>(n,0));4.p59螺旋矩阵,起初不知道如何进行模拟,能感觉到排列是有规律的,先从左向右,再从上到下,再从右到左,再从下到上,之后重复这4个方向。1.vector类容器,使用sort进行排序时,sort(nums.begin(),nums.end());
2024-04-08 10:44:03 161
原创 代码随想录刷题 day1二分查找与双指针
而mid-1可能是target,但是因为右边界是开区间,所以不能取mid-1,因为mid-1还没判定是不是,而mid已经判定不是了,所以取成右边界没关系。注意,此时是在原数组上进行调整的,移位结束后i++,那么也就是说第一层循环的指针应该在数组前移之后-1,才能指向调整前实指向的值。因为nums[mid]不等于target,所以mid不是右边界点,所以要从mid-1开始再次判断。进行一层for循环,快指针正常向后进行,当遍历的值和目标值不相等时,用快指针指向的值覆盖在满指针指向的位置上。
2024-04-05 21:33:55 209 1
原创 洛谷 P1030 求先序排列 DFS
根据中序序列(左根右)和后序序列(左右根)可以推出来先序序列。后序序列最后一个是根,让后在中序序列中找到根,继而可找到左右子树。再在后序序列中找到左右子树,继而可继续找到根。代码思路:1.输出根节点2.找到左右子树3.对左右子树递归调用dfs。
2024-04-05 19:56:27 249 1
原创 BFS广度优先搜索
给定一个 n×m 的二维整数数组,用来表示一个迷宫,数组中只包含 0 或 1,其中 0 表示可以走的路,1 表示不可通过的墙壁。最初,有一个人位于左上角 (1,1) 处,已知该人每次可以向上、下、左、右任意一个方向移动一个位置。请问,该人从左上角移动至右下角 (n,m) 处,至少需要移动多少次。数据保证 (1,1) 处和 (n,m) 处的数字为 0,且一定至少存在一条通路。
2024-03-20 16:48:14 317 1
原创 DFS深度优先搜索 eg842 排列数字
给定一个整数 n,将数字 1∼n 排成一排,将会有很多种排列方法。现在,请你按照将所有的排列方法输出。
2024-03-17 20:13:46 456 1
原创 503(借教室)
如果至少存在一个订单不满足,那么在第一个不能满足的订单之后的订单都属于订单无法满足需输出另一特定值。共有 m 份订单,每份订单用三个正整数描述,分别为 dj,sj,tj,,,表示某租借者需要从第 sj 天到第 tj 天租借教室(包括第 sj 天和第 tj 天),每天需要租借 dj 个教室。按照题目描述,对天数的部分区间均-d,让后判断是否小于0,若有
2024-03-06 21:13:49 467 2
原创 前缀和与差分(二维)
对一块矩形a的子矩阵全部插入某一个数。可以构造二维数组a的差分数组b,将对a的子矩阵插入c数的操作变成以下对几个数的插入:b[x1][y1]+=c,b[x2+1][y1]-=c,b[x1][y2+1]-=c,b[x2+1][y2+1]+=c。(如何求差分数组b,假定b数组为0,a数组即也为0,对b数组每个点插入b[x1][y1]+=c,b[x2+1][y1]-=c,b[x1][y2+1]-=c,b[x2+1][y2+1]+=c)对差分数组操作完之后,再将差分数组b转换成前缀和数组,即所求的数组。
2024-03-04 19:43:06 347 1
原创 二分(学习自用)
二分就是能比暴力枚举能用更少的时间复杂度找出边界点。一个长为n的数组,(l,r分别为左右边界)具有某种性质,能够将数组分成两半,例如左边满足右边不满足。
2024-03-03 16:13:55 345
原创 实现单链表的就地逆置,两个非递减链表合并成一个非递减链表,非递增链表
【代码】实现单链表的就地逆置,两个非递减链表合并成一个非递减链表,非递增链表。
2023-04-21 22:52:05 352 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人