自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 MMdetection报错总结

1、一定要注意版本匹配 pytorch、cuda、以及mmcv都要注意版本匹配,只有这三个版本同时匹配才行。同时要注意现阶段mmdetecction所支持的版本。2、使用超算平台配环境时,要记得先安装cuda。

2024-03-21 20:48:04 177 1

原创 代码随想录算法训练营第十六天|104二叉树的最大深度、111二叉树的最小深度、222完全二叉树的节点个数

反之,右子树为空,左子树不为空,最小深度是 1 + 左子树的深度。最后如果左右子树都不为空,返回左右子树深度最小值 + 1。二叉树的最小深度同样要使用后序遍历来进行,最小深度需要找到左子树和右子树最小的深度。思路:二叉树的最大深度可以转换为求根节点的高度,可以使用后序遍历来进行求解。思路:本题与求二叉树的最大深度的逻辑类似。如果左子树为空,右子树不为空,说明最小深度是 1 + 右子树的深度。本题还可以通过完全二叉树和满二叉树之间的关系求解。LeetCode111二叉树的最小深度。本题也可以使用层序遍历。

2024-03-19 17:56:50 246 1

原创 代码随想录算法训练营第十五天|层序遍历、226翻转二叉树、101对称二叉树2

思路:判断二叉树是否对称,需要比较的是根节点的左右子树是否对称,所以需要对左右两棵子树各进行一次遍历,我们要判断两颗子树的里侧和外侧是否相等。总结:今天学习了二叉树的层序遍历,了解了层序遍历的迭代是用queue来实现的,同时在对称二叉树这道题目中,拓展了思路,一开始并没有想到可以用内侧外侧来进行比较。层序遍历就等价于图论中广度优先搜索,需要使用队列这种数据结构来实现,队列先进先出,符合一层一层遍历的逻辑。递归法有三部曲:一是确定返回值和输入的递归函数的参数,二是确定终止条件,三是确定单层的递归逻辑。

2024-02-22 10:26:17 167 1

原创 代码随想录算法训练营第十四天|二叉树遍历

那么再看看中序遍历,中序遍历是左中右,先访问的是二叉树顶部的节点,然后一层一层向下访问,直到到达树左面的最底部,再开始处理节点(也就是在把节点的数值放进result数组中),这就造成了。先序遍历是中左右,后续遍历是左右中,那么我们只需要调整一下先序遍历的代码顺序,就变成中右左的遍历顺序,然后在反转result数组,输出的结果顺序就是左右中了。前序遍历的代码,不能和中序遍历通用呢,因为前序遍历的顺序是中左右,先访问的元素是中间节点,要处理的元素也是中间节点,所以刚刚才能写出相对简洁的代码,

2024-02-05 10:57:54 158 1

原创 代码随想录算法训练营第十三天|239滑动窗口最大值、347前K个高频元素

本题一开始的想法就是暴力求解,遍历一遍找出最大值即可。看了代码随想录的思路,感觉很绝妙,我们可以构造一个单调队列,只需要维护每次窗口中最大的那个元素即可。保持如上规则,每次窗口移动的时候,只要问que.front()就可以返回当前窗口的最大值。本题使用优先队列来完成,优先队列的本质是披着队列外衣的堆。LeetCode239滑动窗口最大值(难)LeetCode357前K个高频元素。本题我对map还不熟悉,以后补上。

2024-02-04 17:13:32 175 1

原创 代码随想录算法训练营第十一天|20有效的括号、1047删除字符串中所有相邻重复项|150逆波兰表达式求值

思路:本题一开始我没有看清楚题目要求误以为也可以删除两个及以上的连续重复项,所以没有写出来,后来仔细审题以及测试用例的时候发现只需要删除两个连续重复项即可,大大简化了题目难度。但是自己写代码的时候思路不是很清晰,不知道应该如何实现判断括号匹配,看了代码随想录的解释之后想到,,然后递归返回的时候,从栈顶弹出上一次递归的各项参数,所以这就是递归为什么可以返回上一层位置的原因。思路:本题的本质在于将中缀表达式转换为后缀表达式,需要使用栈来实现,算是栈的经典使用。通过本题可以间接了解递归的原理,

2024-02-03 11:41:56 227 1

原创 代码随想录算法训练营第十天|232用栈实现队列、225用队列实现栈

思路:栈的特性是先进后出,队列的特性是先进先出,所以要想用栈实现队列的操作,需要使用两个栈,入队列的操作和进栈一致,但是出队列需要将第一个栈中的元素弹出存到第二个栈中,这样 就实现了栈中元素的逆置,也就是队列的输出顺序。思路:本题用队列实现栈的操作,入栈和进队列的操作相同。而出栈需要将队列中的元素逆置,那么只需要将队列头部的元素(除了最后一个元素)全部重新插入队列,不断循环,就得到了出栈的元素顺序。总结:今天的学习使我更加深刻的理解了栈和队列,对它们的应用也有了更深的理解。

2024-02-01 19:20:46 149 1

原创 代码随想录算法训练营第六天|242有效的字母异位词

虽然std::set、std::multiset 的底层实现是红黑树,不是哈希表,std::set、std::multiset 使用红黑树来索引和存储,不过给我们的使用方式,还是哈希法的使用方式,即key和value。map也是一样的道理。std::unordered_set底层实现为哈希表,std::set 和std::multiset 的底层实现是红黑树,红黑树是一种平衡二叉搜索树,所以key值是有序的,但key不可以修改,改动key值会导致整棵树的错乱,所以只能删除和增加。对于常见的哈希结构,

2024-01-15 23:13:06 378

原创 代码随想录算法训练营第四天|24两两交换链表中的节点、19删除链表倒数第N个节点、面试题0207链表相交、142环形链表||

如果两个链表有公共的节点,那么从第一个公共的节点开始,剩下的节点都是相同的。总结:到今天链表的章节结束了,在链表的题目中,双指针法十分重要,同时画图可以更好的帮助理解题目要求和内容,以后要养成做提前画图的习惯。思路:两两交换链表的节点我一开始并未想到增加 虚拟头结点导致出现了问题,后来通过查看代码随想录中的讲解,直观了理解了这道题的步骤,同时发现了画图在做题中的重要性。思路:这道题一开始没有想到使用双指针法,所以在倒数第N个的确定上有些障碍,我想先遍历一下链表求出链表长度然后减N就可以正向删除相应的节点。

2024-01-13 22:42:20 531 1

原创 代码随想录算法训练营第三天|203移除链表元素、707设计链表、206反转链表

同时熟悉了链表的各种操作,最后在链表反转上拓宽了我的思路,了解了链表逆置可以直接将指针的指向改变。思路:我认为可以创建一个新的链表然后将现有的链表进行遍历之后就可以得到新的链表。双指针法:这个思路一开始我并没有想到,看了代码随想录之后才想到可以将指针的指向直接改变,这样就可以完成链表的反转。思路:移除链表元素也就是删除链表元素,直接将要删除的节点的前一个元素指向它的后一个元素,然后释放相应的内存空间。思路:本题要求设计链表的删除、头插、尾差以及在任意位置插入元素,需要明确边界条件,同时注意不要断链。

2024-01-12 22:46:23 512

原创 代码随想录算法训练营第二天|977有序数组的平方、209长度最小的子数组、59螺旋矩阵 ||

这里一圈下来,我们要画每四条边,这四条边怎么画,每画一条边都要坚持一致的左闭右开,或者左开右闭的原则,这样这一圈才能按照统一的规则画下来。一个指针向右,一个指针向左,由于数组本身有序,所以两边的数平方之后的值会大于中间的值,所以最大值在两边。可以发现这里的边界条件非常多,在一个循环中,如此多的边界条件,如果不按照固定规则来遍历,那就是。窗口的起始位置如何移动:如果当前窗口的值大于s了,窗口就要向前移动了(也就是该缩小了)。窗口的结束位置如何移动:窗口的结束位置就是遍历数组的指针,也就是for循环里的索引。

2024-01-11 22:01:54 375

原创 代码随想录算法训练营第一天|704二分查找、27移除元素

二分查找首先要求在一个有序的数组中才能进行,然后取位于数组中间的值与目标数target作比较,若目标值大于中间值则下一次比较在区间右侧,反之左侧。二分查找中重要的地方在于区间的选取,是左右两边均为闭区间还是一个左闭右开的区间。今天主要学习了二分查找和数组中元素移除,二分查找中重点在于区间的选取,左闭右闭和左闭右开在循环判断条件上是不同的;快指针是用来查找下一个新数组中的元素,慢指针是用来标出下一个元素的下标。思路:数组中由于数据的存放是连续的,所以删除元素时需要将右侧的所有元素向左移动一位。

2024-01-10 20:35:51 378 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除