自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录训练营第三十四天|56. 合并区间 、 738.单调递增的数字 / 968.监控二叉树 (可跳过)

自己的思路有点乱,主要有两点,加入最后一次遍历的元素,还有就是这个区间被上一个区间包括 的情况要考虑进去。逻辑简单实现起来复杂。

2024-06-25 17:08:59 130

原创 代码随想录训练营第三十三天|452. 用最少数量的箭引爆气球 435. 无重叠区间 763.划分字母区间

这个就是也是比较这个的开头和上个的结尾,如果重合就加一并且更新上一个的末尾更新为最段的就那个末尾,然后接着比较下一个与上面那个更新过的。要注意的是这个序列是按照开头拍过序的才醒。这里的巧妙之处在于更新新的右边届,遇到不重合就加一个剑,还有就是循环是从1开始的因为要用到i-1;这个自己的思路和上一题的是改的。

2024-06-24 23:42:33 163

原创 代码随想录训练营第三十一天|134. 加油站 、 135. 分发糖果 、860.柠檬水找零 、 406.根据身高重建队列

思路就是计算每个店的结余,但是实现起来如果是暴力的话会超市。理清楚20时候的逻辑。

2024-06-23 18:28:23 139

原创 代码随想录训练营第三十天| 122.买卖股票的最佳时机II 、55. 跳跃游戏、 45.跳跃游戏II 、 1005.K次取反后最大化的数组和

注意这一块他要放在更新mybox之后,自己一开始放在前面是错误的,然后就是if中i!=len-1如果为0,但是也在最后一个格子了,也是符合道理的。这个回事每次sort然后把最小的那个数对他去翻,然后接着sort,然后最后求和就可以了。这题的代码非常简单主要是想法,就是取相邻两个的差,总体就是压到降价就不搞,遇到涨价就加进去。这题就是要判断当前的下一步的下一步能走到哪里,贪心的一直走下去就可以,005.K次取反后最大化的数组和。

2024-06-22 21:45:42 245

原创 代码随想录训练营第二十九天|455.分发饼干 、376. 摆动序列 、53. 最大子序和

思路就是先对两个数组尽心sort排序,然后遍历孩子数组,用饼干大小的数组去对比孩子的胃口,如果饼干够大,那就直接下一个孩子 饼干也下一个,如果不够大,孩子还是这个饼干下一个,当饼干没了。直接returnres就可以了。各种特殊情况真恶心啊。

2024-06-20 22:41:01 116

原创 代码随想录训练营第二十六天|93.复原IP地址 、78.子集 、90.子集II

这就是和组合非常相似的一个算法,每个节点都存一次,不用判断,主要判断是否超长就行了。这是和上一题的符合题目,增加了used标记位 的数组,防止出现重复的,

2024-06-19 20:55:30 145

原创 代码随想录训练营第二十五天|39. 组合总和 40.组合总和II 131.分割回文串

这个和上一题主要是两个不同,一个就是index要是i+1不能是i还有一个就是要去重,这里借用了一个数组进行状态标记非常巧妙,可以有效防止同一层前后元素重复,但是不影响下一层使用相同的元素,非常巧妙。应该从i接着开始,也就是可以重复用当前值,但是不会用前面的也就是不会重复。这里的递归的循环初试不应该还是从0 开始,这样就会出现重复的值。还有一个点就是要先排序,这个是必要的,不然可能会漏掉答案。这是自己写的第一版本代码,有一个错误,就是。

2024-06-17 21:51:52 140

原创 代码随想录训练营第二十四天| 77. 组合 、 216.组合总和III 、17.电话号码的字母组合

而不能是res.add(path)这题不算难,不同的是,这里不用startindex因为每个都是单独的数组,直接遍历完就对了。列表的数据安全和独立性,避免由于引用共享导致的潜在问题。这是一个很好的编程实践。这里好好理一下最后的这个删除最后一个元素的操作。您提出了一个很好的问题。

2024-06-15 15:36:47 449

原创 代码随想录训练营第二十三天|108.将有序数组转换为二叉搜索树 、 538.把二叉搜索树转换为累加树

前序遍历,先处理根节点,然后处理左右节点,然后将根节点返回,自己对于递归的return有些薄弱,可以好好理一理。这题的思路就是简单的去二分数组然后递归构造就行了。这题是递归其实和构造二叉数有些类似的是。这题很简单,用后中左的遍历顺序就行了。108.将有序数组转换为二叉搜索树。538.把二叉搜索树转换为累加树。

2024-06-14 16:34:18 122

原创 代码随想录训练营第二十二天|235. 二叉搜索树的最近公共祖先 、236. 二叉树的最近公共祖先、701.二叉搜索树中的插入操作 、450.删除二叉搜索树中的节点

这是非常重要 的一题,面试高频,主要的思想就是先用后续进行回溯操作,首先设置终止条件,空或者是等于p或者q直接返回root,这样就行了,然后是常规的递归,最后是处理逻辑。这题运用了二叉搜索树的特性,所以就很舒服,这里的if其实是进行判断进入那个递归过程,如果不是都大于或者都小于,直接就return就对了,这就是搜索数的特性。如果左右都有证明他就是要找的root,直接return,左空返回右,右空返回左,这样就可以处理完成。701.二叉搜索树中的插入操作。二叉搜索树的最近公共祖先。二叉数的最近公共祖先。

2024-06-14 00:00:00 166

原创 代码随想录训练营第二十一天|530.二叉搜索树的最小绝对差 、501.二叉搜索树中的众数 、236. 二叉树的最近公共祖先

这个也是典型的运用的是中序遍历有序的特点,也是在中间进行数据的处理,首先判断的如果pre是null证明是新数字,直接把count设置为1就行,然后后面接着if判读当前root和pre的值,然后进行是否加一的操作,如果不等于就接着zhi为1,然后接着判断count和maxconut的关系,如果相等,直接加,如果大于先clea然后再加进去,然后更新count,这样递归就行。530.二叉搜索树的最小绝对差。

2024-06-13 14:05:02 164

原创 代码苏随想录训练营第二十天|654.最大二叉树 ● 617.合并二叉树 ● 700.二叉搜索树中的搜索 ● 98.验证二叉搜索树

这题也是寻常的递归,但是有一个不同点就是分情况递归,根据root的不同情况也是常规的递归步骤 处理 左子树 右子树这样的顺序,只不过根据了当前root的情况去写 了。这题的思路很简单,理解了构造二叉树就行,就是单纯的递归,最最大值取出放在节点里面,然后吧最大值的左右递归进去,一直这样下去就行了。卡尔思路是中序遍历就是一个严格的递增的,所以只要不是递增,就不行。这是官方的自己的方法,官方的递归要仔细思考一下。去递归的中序遍历,然后判断每次的是不是符合要求。这个写法同理,不过是更简便你的。

2024-06-11 18:50:51 252

原创 代码随想录训练营第十八天|● 513.找树左下角的值● 112. 路径总和 113.路径总和ii● 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树

自己会一种就行了,层序遍历然后取最后一个的第一个元素就行了.513.找树左下角的值。

2024-06-09 19:19:24 84

原创 代码随想录训练营第十七天|110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404.左叶子之和

这里自己有不明白的地方,如果是-1和0 的话为什么依然成立。自己的思想就是先序,然后增加一个标记,是左叶子的进行判断。

2024-06-08 18:42:12 99

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

第二种就是用递归,整体递归体的思路就是,先左右,然后是gen,跟的高度就是左右的最大值然后再加上一,这样就的到了。这就是两种写法,第一种就是常规的层序遍历,把一层遍历结束就加一,这是最容易理解的一种。记住这个层序遍历的方法就行,遇到的第一个叶子节点,也就是没有左右字数的节点。思路是一样的,就是入队的时候不是左右子树而是遍历子节点的列表。会写层序和递归就行了,利用特性没必要。104.二叉树的最大深度。

2024-06-07 21:07:48 122

原创 代码随想录训练营第十五天| 226.翻转二叉树 (优先掌握递归) 、 101. 对称二叉树 (优先掌握递归)

队列的层序遍历思想就是,一层一层的,当第一次带一个新的层次,我们会记录当前的len是多少,没处理一个节点就把len减去一,处理完后,进入下一个层接着处理就行了。对于层序遍历的递归实现主要的重点就是会有一个代表层数的tag所以,检索的先后顺序就不是很重要,因为有deep这个变量去记载当前的层数,当遍历进入到一个新的递归时候,会把deep加一,然后判断当前的res里面是否有代表这个deep的二级数组,没有就增加,有就把val存进去即可。其实还都是正常和遍历,然后对其结果进行反转,首先是层序遍历的递归方案。

2024-06-06 19:48:16 121

原创 代码随想录第十四天| 递归遍历、迭代遍历、统一迭代

他是先进右再进左,这样出的时候就是左右的顺序,也就是最后的中左右,前后序遍历是左右中,此时我们先把前序的中左右变成中右左,然后统一反转就是左右中,这就是后续的思路。递归的思想比较统一只需要变换递归体中的顺序即可。迭代,有点使用栈去模拟递归的思路了。中序小模糊,加强一下。

2024-06-05 22:20:07 124

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

这题的大概是,遇到左边类型的就把匹配的 有括号入栈,然后当遍历到的不是左括号时候,就代表是有括号,根据规则,这时,栈的最上方的括号,应该和我们当前遍历到的有括号是相同的,所以,当此时 栈是空或者栈顶的匹配不上,就直接false,这里直接returbn了,如果匹配 的上,就把站定的pop出去,接着后面的遍历,然后如果全部遍历完毕了,就判断这时候的栈是不是空的,空的是符合题意的,不空就错,直接 false、思路不难,就是把入栈元素和栈顶的匹配一下,如果一样就出去,然后接着遍历。150. 逆波兰表达式求值。

2024-06-01 14:25:02 455

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

就是一个比较级基础的用栈试下队列,原理很简单,一个队列就相当于两个栈头对头的合在一起,想取第一个元素的时候把元素移动到后面的那个栈就行了。pop操作自己直接用了deque的polllast,232.用栈实现队列。

2024-05-31 13:45:00 159

原创 代码随想录训练营第八天|344.反转字符串 、541. 反转字符串II、卡码网:54.替换数字 、 151.翻转字符串里的单词 、卡码网:55.右旋转字符串

这里自己的思路是把他们两个分为一组,其实题目中的描述就是两个一组,然后交替反转,一个反一个不翻。然后我的思路是增加一个状态为,一开始自己默认的是-1 ,然后再循环开始时候先成-1,这样是不对的,比如直接k是2,字符串长度也是2,就没办法进入到循环里面,但是也要反转,所以正确的是,默认就是1,然后再最后在呈上-1,这样就符合逻辑了,其他的就是一些反转字符串的细节,这里使用sub去取的,让后再用一些反转函数。题解的思路是,先把整体倒过来,然后前k个倒过来,后面的再倒过来,这样相当于负负得正。

2024-05-29 16:19:31 117

原创 代码随想录训练营第七天| 454.四数相加II 、383. 赎金信 、15. 三数之和 、18. 四数之和

这题就是用哈希查找去节省时间复杂度,正常来说是4次方,现在是2次方加2次方然后再加上哈希查找的时间,先把前两个数组加起来v遍历然后存在了第一个hash中,记得要保存每个和出现的次数,然后去遍历后两个,如果和为0 就把res加上对应的次数,其中要注意的是=map1.getOrDefault这个函数的运用,这个高清,其他没啥问题。所以后面在遇到-1开头的直接跳过就行,不用担心我们会用到好几个-1如果用到两个-1 那第三个就确定了,所以一定是重复的,比如-1 -1 -1 -1 0 0 0 0 2 2 2 2。

2024-05-28 17:25:44 185

原创 代码随想录训练营第六天|242.有效的字母异位词 、 349. 两个数组的交集 、 202. 快乐数 、1. 两数之和

这题就是最简单的哈希思想,用的ascll码,进行取哈希code,然后左后判断的时候直接就在-1的地方判断,省去了遍历数组统一判断是否小于0,如果能够正常循环完毕,就证明没有小于0的,直接返回ture就可以了,整体没难度,哈希思想的入门。242有效的字母异位词。

2024-05-27 13:50:55 131

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

关于链表的题一般都要增加头结点,这个要注意,针对这个题,while的判断条件不能只设置一个,要设置两个,因为这个交换节点涉及到了两个节点,也就是一对一对的,所以要后面两个都存在才能进入循环,进入循环后,就开始一步步操作即可,把指针换过去,这个注意过程别搞错了,还有就是最后的pre和last要等于设置的demo变量,因为更换后没那个demo其实是在后面了,一开始自己设置为了last所以 出错了,注意是demo。24两两交换链表中的节点。

2024-05-25 19:14:44 91

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

还有就是当移除元素后,指针不往后移动,这个不移动其实不是真正的没有移动,因为我们判断的是next的值,next值变了,所以其实还是判断的新值,如果没去元素,就移动next。这样判断的也是新的值。双指针法,最后返回first的原因是,每次循环结束,我们的first指向的是之前的last,last是之前的last的next,然后去判断,last的next为空,就代表之前的last就是最后一个元素,此时,我们已经把first指向了最后一个元素,所以返回first就行了,203.移除链表元素。

2024-05-24 13:58:33 387 1

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

这题主要不是考察算法,主要是去模拟一个旋转过程,为了方便控制过程,采取了左闭右开的方案,采用其他的也行,合理即可,然后就是去控制边界,有一个点需要注意一下,就是技术偶数的问题,一开始自己想的是向上取证,把技术偶数的情况直接放到循环中去解决,后来发现很麻烦,不如直接在程序末尾直接进行判断,让后把那个数 n的平方填进去方便,主要是。这题主要运用快慢指针的方法,两个指针一个从前一个从后面取元素,然后比较大小然后根据判断结果取移动指针,直到两个指针碰到,训话结束,得到期望结果。59. 螺旋矩阵||

2024-05-23 21:12:12 202

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

主要注意好边界问题就行。

2024-05-21 22:23:04 162

空空如也

空空如也

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

TA关注的人

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