自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营第46期Day16

当depth>max的时候才更新result,我们保证优先左边搜索,那么result存的就是最底层左下角的值。leetCode 513.找树下左下角的值。这道题细节较麻烦,国庆看视频再过一遍。LeetCode 112.路径总和。都找最底层了,那必然是层序遍历啊。和路径相关,那多半就要递归回溯了。

2024-09-26 22:31:00 150

原创 代码随想录算法训练营第46期Day15

啊啊啊啊啊啊啊这期写的太晚了,而且我对这期内容很不熟悉,基本所有代码都是比这卡哥的写下来的,orz,跪了。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。,每次都是复制赋值,不用使用引用,否则就无法做到回溯的效果。(这里涉及到C++语法知识)每次函数调用完,path依然是没有加上"->" 的,这就是回溯了。这里要使用递归和回溯,我对回溯很不熟悉,正好补习一下。leetCode 257 二叉树的所有路径。注意在函数定义的时候。直接当普通二叉树遍历。

2024-09-26 00:37:12 395

原创 代码随想录算法训练营第46期Day14

求最小深度,那就在层序遍历的过程中截断就好了。LeetCode 101.对称二叉树。leetcode 226翻转二叉树。层序遍历的层数不就是最大深度吗。

2024-09-24 22:00:54 147

原创 代码随想录算法训练营第46期Day13

中序和上面两种都不同,中序有两个操作,他要先将节点进行存储,这个环节结束后才进行访问。今天主要是二叉树的遍历,之前一直写的是递归的方法,今跟着敲一下迭代的方法。引用一下卡哥的图,这里后序是可以由前序经过一些操作转化的。leetcode 144前序遍历。

2024-09-23 23:53:39 166

原创 代码随想录算法训练营第四十六期DAY11

这道题我最开始想用priority_queue,但是我们的窗口是移动的,我们无法保证我们pop出去的元素是我们希望的元素。也就是说我们不需要担心其他的异常状态,只需要做好表达式的计算工作就好。那我们只需要分析好逆波兰表达式的原理就可以了。但实际上其实priority_queue也是可以的,但是我们存储时需要多存储元素的索引。平常使用的算式则是一种中缀表达式,如 ( 1 + 2 ) * ( 3 + 4 )。该算式的逆波兰表达式写法为 ( ( 1 2 + ) ( 3 4 + ) * )。

2024-09-22 10:13:03 269

原创 代码随想录算法训练营第46期 Day10

在push数据的时候,只要数据放进输入栈就好,但在pop的时候,操作就复杂一些,输出栈如果为空,就把进栈数据全部导入进来(注意是全部导入)再从出栈弹出数据,如果输出栈不为空,则直接从出栈弹出数据就可以了。栈实现队列的出队操作效率低下:栈底元素(对应队首元素)无法直接删除,需要将上方所有元素出栈。所以我们一定需要两个栈,一个输入一个输出;实际上只需要一个队列就可以模拟栈,只需要让队尾之前的元素重新排队就好了。我自己的代码太丑陋了就不贴了,贴一下卡哥的代码吧。注意这个题要两个两个删除。

2024-09-20 20:47:46 152

原创 代码随想录算法训练营第46期 Day9

这周三四,和下周都会比较忙,一个不会鸽但博客会比较水。先贴一个kmp算法模板。接下来就是两个字符反转。先写入大概,再删除空格。

2024-09-19 23:46:04 217

原创 代码随想录算法训练营第46期Day8

这两天事比较多有可能会鸽,如果发了就是没鸽(,还好今天的题都比较基础,LeetCode 541.反转字符串Ⅱ。LeetCode 344反转字符串。卡码网 54.替换数字。

2024-09-18 15:07:27 138

原创 代码随想录算法训练营第46期 Day7

虽然很多情况下,力扣击败%就是看个乐,但是这里确实是使用数组更优。使用map的空间消耗要比数组大一些的,因为map要维护红黑树或者哈希表,还要做哈希函数,很费时,数据量大的话就能体现出来差别了。这道题相较于昨天的两数之和问题变得复杂了一些,但是在这道题里双指针法解封了,因为两数之和问题里要求返回的是下标, 而双指针法一定要排序,一旦排序之后原数组的索引就被改变了。同时这道题使用哈希比较困难,因为他需要进行去重,操作十分繁琐。和三数之和差不多,但是要比三数之和多一层循环的操作。下面贴一下双指针解法的注释。

2024-09-17 11:24:04 254

原创 代码随想录算法训练营第46期 Day6

当我们要使用集合来解决哈希问题的时候,优先使用unordered_set,因为它的查询和增删效率是最优的,如果需要集合是有序的,那么就用set,如果要求不仅有序还要有重复数据的话,那么就用multiset。这个题的主要难点是怎么解决无限循环的问题,既然是循环那么必然会有值是重复出现的,那么我们只需要用哈希表来判断有没有值重复出现就可以了。因为是两数之和,所以我们知道一个数就可以确定另一个数,所以我们只需要在查找到某个数时,看看之前有没有和他匹配(两数之和等于target的),注意本题只有一个有效答案。

2024-09-16 10:00:10 242

原创 代码随想录算法训练营第46期 Day4

又到了我们最喜爱的双指针环节,我们始终保持快指针比慢指针提前k个单位,那么当快指针走到结束位置的时候,慢指针就是链表的倒数第k个节点。要注意相交之后自交点开始所有值都是相同的!相遇之后,快指针回到开头,并将快指针改为一次跳跃一步,慢指针不移动仍然在相遇节点处,仍然是一次跳跃一步。这里哈希的思路就是,每到一个节点都检查这个节点开始有没有成环,如果没有就插入,有就返回这个节点。依旧是一道哈希和双指针都可以做的题,哈希的话其实相当于水过去了,主要还是练练双指针。先给大家贴一下,我的丑陋的代码。

2024-09-14 20:23:29 296

原创 代码随想录算法训练营 Day3

今天的题都比较基础,因为学校开学晚,讲的慢(其实是学校太菜了)。下面再附以下卡哥的代码,卡哥的代码最终是重新给头节点赋值的,这样就可以把虚拟头节点释放掉了。你问我一号节点之后的所有节点怎么反转?那就是从前有座山,山上有座庙的故事了。既然是练习,那我们就再写一下不用虚拟头节点的代码吧(反正改不了几行,bushi。写一个小递归,把大象装冰箱一共分三步,那反转一个链表要分几步呢。第一步,把头节点(之后称为1号节点)之后的所有结点都反转完。偷个懒,现在不早了。第二步,把二号节点的后继指向一号节点。

2024-09-13 22:25:09 241

原创 代码随想录算法训练营第46期 Day2

我通俗地解释以下原理,对于这道题,首先我们会不断向右扩展窗口直至满足条件,在满足条件后,会从左向右缩窗口来求最小窗口的长度。这道题没有其他的,就是一道纯模拟,之前想的就是,哎呀,老麻烦了。模拟是很考验码力的,对边界的考察也比较复杂,最好还是找时间静下来多做几道模拟,提一提码力(为以后赛博搬砖做准备).但是要注意的是,这两种方式代表的l,r是不同的。同时下面这道题是一个二维前缀和的板子题,由于今天时间不早了,就不进一步进行前缀和的介绍了。今天上完课回来比较完了,题也比昨天多,比较乱,请多包涵。

2024-09-12 22:50:09 215

原创 代码随想录算法训练营第46期 Day1

所以我们同样是利用双指针进行处理,但是我们确定的是最大值,所以最后得到的数组需要进行反转也就是reverse一下,或者我们从一开始就从最大的下标开始存储。刚做到这道题的时候就想到了暑假预习顺序表的时候记下来的一句话,移除相当于将移除元素与最后一个元素交换,然后数组长度减一,那么这道题我也采用了这个思想。由于写到这里的时候宿舍停电了,所以这里就不介绍暴力解法了。LeetCode.977 有序数组的平方。注意到,平方最大的值一定在数组的首或尾。第二种:双指针法(快慢指针版)第三种:双指针法(头尾指针版)

2024-09-11 22:16:59 555 1

空空如也

空空如也

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

TA关注的人

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