- 博客(47)
- 收藏
- 关注
原创 代码随想录35 动态规划
下面是我的错误解法,用的贪心算法写的,但是不能保证最优解,能通过250/285个解,其实逻辑是错误的。机器人每次只能向下或者向右移动一步。递推公式:dp[i][j]=dp[i-1][j]+dp[i][j-1]初始化:因为这个只能向右和向下移动,所以初始化第一排和第一列。- 支付 15 ,向上爬两个台阶,到达楼梯顶部。1. 向右 -> 向右 -> 向下 -> 向下。2. 向下 -> 向下 -> 向右 -> 向右。1. 向右 -> 向下 -> 向下。2. 向下 -> 向下 -> 向右。
2025-02-04 11:06:13
819
原创 代码随想录34 动态规划
1.经典问题:背包问题打家劫舍斐波那契数列爬楼梯问题股票问题2.dp数组以及下标的含义3.递推公式3.dp数组初始化4.遍历顺序5.打印数组。
2025-01-31 16:50:17
213
原创 代码随想录33
从后往前遍历可以确保当前位数字被处理之后,后续更高位的数字始终能保持正确的单调递增状态。如果从前往后遍历,一旦需要调整某一位的值,可能会导致已经调整过的更高位需要重新检查。一旦发现不满足的情况,直接将前一个数字减 1,并标记需要从哪里开始将后续数字置为。从后往前遍历的顺序可以有效地捕捉到当前数字和前一个数字不满足单调递增的地方(即。给定一个二叉树,我们在树的节点上安装摄像头。这个是暴力算法的,但是后面的超出时间限制了。计算监控树的所有节点所需的最小摄像头数量。的最大数字,且数字呈。时,我们称这个整数是。
2025-01-31 15:15:33
313
原创 代码随想录32 贪心算法 leetcode452.用最少数量的箭引爆气球
有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组points,其中表示水平直径在xstart和xend之间的气球。你不知道气球的确切 y 坐标。一支弓箭可以沿着 x 轴从不同点地射出。在坐标x处射出一支箭,若有一个气球的直径的开始和结束坐标为startend, 且满足end,则该气球会被。可以射出的弓箭的数量。弓箭一旦被射出之后,可以无限地前进。给你一个数组points返回引爆所有气球所必须射出的弓箭数。
2025-01-30 19:52:04
911
原创 代码随想录31
编号为 4 的人身高为 4 ,有 4 个身高更高或者相同的人排在他前面,即编号为 0、1、2、3 的人。因此 [[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]] 是重新构造后的队列。编号为 2 的人身高为 5 ,有 2 个身高更高或者相同的人排在他前面,即编号为 0 和 1 的人。编号为 3 的人身高为 6 ,有 1 个身高更高或者相同的人排在他前面,即编号为 1 的人。编号为 5 的人身高为 7 ,有 1 个身高更高或者相同的人排在他前面,即编号为 1 的人。
2025-01-27 14:19:24
740
原创 代码随想录30 贪心算法
给你一个整数数组nums和一个整数kinums[i]-nums[i]重复这个过程恰好k次。可以多次选择同一个下标i。以这种方式修改数组后,返回数组。5选择下标 1 ,nums 变为 [4,-2,3]。6选择下标 (1, 2, 2) ,nums 变为 [3,1,0,2]。13选择下标 (1, 4) ,nums 变为 [2,3,-1,5,4]。
2025-01-26 23:33:43
899
原创 代码随想录29 贪心算法
遇到这种[3,0,8,2,0,0,1]就不行因为会执行最大的3,还是有逻辑错误,我这个是模拟直接跳过了,设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。这是我自己写的,173个案例能通过168个。向后跳转的最大长度。
2025-01-24 15:39:32
230
原创 王道数据结构day1
数据元素:数据的基本单位数据项:数据元素的最小单位数据结构:存在特定关系的数据元素的集合数据对象:相同性质的数据元素的集合。
2025-01-21 15:54:42
128
原创 代码随想录27
正好由四个整数(每个整数位于0到255之间组成,且不能含有前导0),整数之间用'.'分隔。给定一个只包含数字的字符串s,用以表示一个 IP 地址,返回所有可能的,这些地址可以通过在s中插入'.'来形成。你重新排序或删除s中的任何数字。你可以按顺序返回答案。部分通过代码:报错原因:字符串可能很长很长terminate called after throwing an instance of 'std::out_of_range' what(): stoi。
2025-01-21 14:53:15
336
原创 代码随想录26
给你一个的整数数组candidates和一个目标整数target,找出candidates中可以使数字和为目标数target的 所有,并以列表形式返回。你可以按返回这些组合。candidates中的数字可以。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为target的不同组合数少于150个。[2,3,6,7], target =72 和 3 可以形成一组候选,2 + 2 + 3 = 7。注意 2 可以使用多次。7 也是一个候选, 7 = 7。仅有这两种组合。
2025-01-17 20:37:35
526
原创 头盔识别技术
如果你的电脑没有支持 CUDA 的 NVIDIA GPU,只能运行 CPU 版本的 PyTorch。对于很多任务(尤其是小型的模型开发和学习),CPU 完全足够。(他妈了个耙子,conda --version的时候一直显示没创建成功,我明明已经加入path了,原来是他妈的要删除窗口,要刷新一下,我服了)YOLOv5 用于在图像或视频中快速而准确地检测物体,给出物体的位置(通过边界框)和类别标签。(You Only Look Once)系列中的一个版本,是一种非常流行的。这个网站都是已标注的数据集。
2025-01-17 18:56:23
299
原创 python入门
1.进入控制台,可见下载python的版本。3.右键python新建python文件。7.python不用定义,直接告诉值。注意缩进,代表了是不是这个条件的。2.下载完pycharm后。10.if else语句。
2025-01-16 23:09:53
263
原创 代码随想录25 回溯算法
注:仅知道前序、中序或后序中的任何一个遍历结果,无法唯一确定一棵二叉树的结构。给出数字到字母的映射如下(与电话按键相同)。该列表不能包含相同的组合两次,组合可以以任何顺序返回。的字符串,返回所有它能表示的字母组合。也无法唯一确定树的结构,因为左右子树的分界点未知。回溯和递归是相辅相成的,回溯常常是写在递归函数里的。是同一棵树的后序遍历,请你构造并返回这颗。一般是在i的循环条件中改变最大的取值条件。2.后序数组最后一个元素为根节点元素。所有可能的有效组合的列表。是二叉树的中序遍历,没有其他符合的组合了。
2025-01-16 17:49:40
969
原创 代码随想录24 leetcode404.左叶子之和
也可以不用这么每次要depth++,depth--太麻烦了,直接传递。是因为在递归函数中,参数是值传递的。换句话说,传递给函数的。是一个拷贝,而不是对原始变量的引用。因此,在递归过程中修改。对当前函数外的调用不会有任何影响,这就避免了手动恢复。给定一个二叉树,在树的最后一行找到最左边的值。的路径,这条路径上所有节点值相加等于目标和。计算给定二叉树的所有左叶子之和。和一个表示目标和的整数。,返回所有左叶子之和。是指没有子节点的节点。
2025-01-15 10:55:18
361
原创 SSM框架学习2
setter注入构造器注入自动装配四种类型如下:1.按类型2.按名称3.构造器4.不使用上面的都是单一注入,下面介绍集合如何注入:
2025-01-14 16:36:42
141
原创 代码随想录22 leetcode:101.对称二叉树
给你一个二叉树的根节点 , 检查它是否轴对称。示例 1:输入:root = [1,2,2,3,4,4,3]输出:true解题思路 判断对称条件:递归实现:为什么是后序遍历:leetccode.104二叉树的最高深度给定一个二叉树 ,返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。示例 1:输入:root = [3,9,20,null,null,15,7]输出:3求二叉树高度使用后序遍历求二叉树深度使用前序遍历深度和高度可以互相转换,因
2025-01-11 16:39:41
925
原创 226.翻转二叉树
这时候会有一个问题,那就是左子树已经转移到右子树去了,要是 invertTree(root->right);的话其实你递归的是左子树。注意点:当你反转swap左右子树之后,下面所有的子树都会跟着反转。就是假如swap夹在递归遍历左子树和右子树之间。,翻转这棵二叉树,并返回其根节点。使用中序遍历的话会有个问题。给你一棵二叉树的根节点。
2025-01-10 21:16:43
118
原创 二叉树层序遍历 Leetcode102.二叉树的层序遍历
二叉树的层序遍历相当于图论的广度优先搜索,用队列来实现(二叉树的递归遍历相当于图论的深度优先搜索)
2025-01-10 19:54:15
1236
原创 代码随想录19 二叉树
2.线性存储:假如我们想找到一个下标i的左右孩子,那i*2+1就是它的左孩子,i*2+2就是它的右孩子。3.二叉搜索树:左子树都小于中间结点,右子树都大于中间结点,找元素时间复杂度为O(logn)map和set容器里面的元素都是有序的,因为它的底层实现是平衡二叉搜索树。1.深度优先搜索:前序中序后序 递归(栈)、迭代法。前序和后序非递归遍历只差三行代码,但是中序遍历和它们不太一样。4.平衡二叉搜索树:左子树和右子树的高度差不大于1。2.广度优先搜索:层序遍历 队列。
2025-01-09 00:35:09
324
原创 代码随想录18
这个用数组的代码,代码时间复杂度为 O(n×k)O(n \times k)O(n×k),会导致在大数据量情况下性能不佳。如果你需要更高效的实现,可以用双端队列将复杂度优化到 O(n)O(n)O(n)。给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。栈的特点使得它可以快速判断当前字符是否与前一个字符相同,从而决定是否需要移除字符。的滑动窗口从数组的最左侧移动到数组的最右侧。注意点:就是输入左边的符号的时候要把相应右边的符号压入栈,这样方便比较。
2025-01-07 00:00:36
1156
原创 Leetcode 232.用栈实现队列
栈,但是它们是局部变量,只在构造函数内部有效。你需要将它们声明为类的成员变量。其他的函数都相同push(),pop(),empty(),size()push(x) -- 将一个元素放入队列的尾部。peek() -- 返回队列首部的元素。empty() -- 返回队列是否为空。pop() -- 从队列首部移除元素。Leetcode 225.用队列实现栈。同理,我们也可以用两个队列来模拟栈。但是也可以用一个队列来模拟栈。你在构造函数中声明了。
2025-01-03 20:14:49
148
原创 SSM框架学习
创造对象,放在Ioc 容器来管理,此时被管理的对象在Ioc容器中统称为Bean。7,在Ioc容器中的service中配置service和dao的依赖关系。在Ioc容器中,service依赖dao对象,称为依赖注入DI。5.删除service层中用new方式创建的dao对象。Ioc+AOP+spring事务处理+mybatis。1.导入spring的坐标。6.创建对应的set方法。3.实例工厂再实例对象。1.无参构造方法调用。
2025-01-02 19:58:07
480
原创 代码随想录16 Leetcode151.反转字符串里的单词
给你一个字符串s,请你反转字符串中的顺序。是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的分隔开。返回顺序颠倒且之间用单个空格连接的结果字符串。输入字符串s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。s = "反转后的字符串中不能存在前导空格和尾随空格。如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。思路:因为空格没有规定,字符串前面后面都可能有空格,而且空格的个数也没有规定。
2025-01-02 16:07:48
615
原创 代码随想录15 Leetcode.344 反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组。、使用 O(1) 的额外空间解决这一问题。不要给另外的数组分配额外的空间,你必须。
2025-01-01 22:38:06
531
原创 代码随想录14 454.四数相加II
给你四个整数数组nums1nums2nums3和nums4,数组长度都是n,请你计算有多少个元组2两个元组如下:第一种是我自己的思路,用暴力法就是四个数组一个个遍历找,但是时间复杂度是o(n^4),太大了代码如下:(但是通不过哈,因为超出时间限制了优化后的思路:就是两个数组相加 再和另外两个数组相加的结果求和看是不是为0我们要知道mapset我们需要记录的以及该和出现的。set383.赎金信ransomNote和magazine,判断ransomNote能不能由magazine。
2025-01-01 21:41:21
871
原创 代码随想录 13 两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。给定 nums = [2, 7, 11, 15], target = 9。因为 nums[0] + nums[1] = 2 + 7 = 9。但时间复杂度较高为O(n^2)因从要优化的话使用map。所以返回 [0, 1]
2024-12-30 19:59:59
212
原创 哈希表 Leetcode:242.有效的字母异位词
哈希表:直白来讲数组其实就是一种哈希表那么哈希表能解决什么问题呢,两个元素都映射到了同一索引下标的位置,刚刚两个元素都映射到了同一索引下标的位置,发生冲突的元素都被存储在链表中,这样我们就可以通过索引找到了一定要保证tableSize大于dataSize。我们需要依靠哈希表中的空位来解决碰撞问题。哈希表的使用:1..它允许存储键值对,可动态变化2.不存储键值对,可动态变化,它只存储3.使用数组来模拟哈希表。
2024-12-29 13:15:37
523
原创 代码随想录11 面试题链表相交&142.环形链表II
下面是我自己写的,这个方法是基于nullptrnullptr问了gpt有更好的解法pA == pBpApBnullptrnullptr。
2024-12-28 23:29:55
581
原创 代码随想录09 两两交换链表中的节点
注意:要操作 一个结点的指针指向 就记得要知道 这个结点的前一个结点指针。因此什么时候要引入虚拟指针,为什么需要呢?因为我们需要改变头结点的指针指向。
2024-12-27 21:57:35
183
原创 代码随想录08 反转链表
注意:reverse函数不能写在reverseList函数里面啊函数不能嵌套着实现。要定义一个pre在cur的前面,这样子cur才能指向前面的数。有两种方法:一种是双指针写法,一种是递归写法。根据双指针的写法我们可以依据此来写递归算法。注意点:还是要注意赋值的顺序。
2024-12-26 20:30:04
228
原创 代码随想录06 移除链表元素
因为移除头节点的话,无需将头节点前的结点指针指向头节点之后,而非头节点就需要考虑这种情况。因此有两种方法:一种是老老实实用原链表分类讨论删,一种是使用虚拟头节点。首先我们要分类讨论移除的是头节点还是非头节点。(注意:最后一个结点的指针默认指向null)为空的话不是null,而是nullptr。首先,我们先了解一下如何定义一个链表。注意,指针用一个横杠和大于号就可以。
2024-12-26 15:45:22
119
原创 代码随想录05 螺旋矩阵II
注意点:我们对于矩阵的边界值要统一,都统一成左闭右开。还要考虑n的奇偶,若是偶数,正常一圈遍历。若是奇数中间会留一个offset记录距离最外层的偏移值。
2024-12-25 16:11:31
192
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人