- 博客(13)
- 收藏
- 关注
原创 代码随想录第17天
思路:从最下面开始,遇到左子树的高度与右子树的高度大于1的返回-1,(如果返回值为-1,则还返回-1),否者返回左右子树大的高度。使用前序遍历加上回溯。
2024-05-29 20:59:35 195
原创 代码随想录第十三天
在小顶堆中,任何父节点的键值都不大于其子节点的键值。这意味着树的根节点是所有节点中具有最小键值的节点。小顶堆的这个特性保证了可以快速地找到最小元素(在堆中即为树的根节点)。在大顶堆中,任何父节点的键值都不小于其子节点的键值。这意味着树的根节点是所有节点中具有最大键值的节点。大顶堆保证了可以快速地找到最大元素。思路:使用一个双向队列,实现单调队列,使其队头是当前窗口最大的值,并随着窗口的移动更新队头。这里使用优先队列实现小顶堆,将小顶堆的容量控制在k个,超出的话删去根节点(即最小的那个)
2024-05-22 11:33:05 293
原创 代码随想录第十一天
看到这道题有个地方不明白,就是那个条件二是什么意思,现在看就是括号不能交叉,例如:{(}),本题括号匹配是使用栈解决的经典问题。这道题和上一个题类似,都使用了栈的特点,做了上一道题,这道就是感觉是复习。
2024-05-21 09:54:35 508
原创 代码随想录第十天
第一次做的时候不知道怎么开始,没看懂那个默认构造函数要干什么:题目中说了实现那几个函数,这个默认构造函数不用管。第一次做的时候还想用上面的思路,但是错了,这里的第二个队列就是个备份。
2024-05-18 23:54:01 214
原创 代码随想录第八天
思路与上一代道题相似,全部反转加上局部反转,当然还有花费更多的空间的解法,这个是在原数组操作,没有多余的空间开销。我写的时候处理不好多个空格的问题,没写出来,这里是快慢指针去空格加上全部反转与局部反转,需要好好消化一下。做题时不太理解reverse函数的用法,它的第二个迭代器指的是元素最后一个的下一个位置。这道题主要就是reverse,可以直接用,也可以手写一个。
2024-05-16 18:19:04 311
原创 代码随想录第六天
思路:这道题要求返回有几组,还好点,暴力的话就是四个for循环,优化一下的话,可以先将两个num1,nums2数组的和放在set中,然后将再set中寻找nums3与num4的和的相反数。看到这题之后完全没有思路,直接头铁暴力做,结果去重又把我搞头晕了,看卡哥的题解,第一个是个哈希法,花了30分钟,去重部分没理解,又去看视频,感觉双指针的思路更好理解,这道题需要多写几遍。思路:这道题简单一些,将一个字符串出现的字符计数,减去另一个出现的字符个数,出现-1则false反之true。
2024-05-16 11:14:52 189
原创 代码随想录第二天
滑动窗口思路:暴力时找到了合适的子序列后是将起始点后移一位,那么那么新的子序列中会有与上一个子序列重复的(从新的起始位置到旧的终止位置),那么滑动窗口就是利用了这个重复的部分,保留从新的起始位置到旧的终止位置的这段结果,利用双指针来实现起始位置与终止位置的变化。思路:这道题可以使用双指针,在数组的左右两边设有指针,比较指针指向的值的平方的大小,将最大值放在新的数组中,只是是从后往前方的(因为题目要求递增,如果从前面放,需要将新数组倒序,效率会低一些),然后相应的指针向中间靠拢。时间复杂度O(n^2)
2024-05-10 19:25:41 571
原创 代码随想录算法训练营第一天
左闭右开:这里right==left时,由于是右开,right不在数组中,无意义,所以while(left<right)左闭右闭:right==left时可以为left(或者说是right)做检查,所以while(left<=right)总结:感觉写的不太好,糊里糊涂的,下一次改进。暴力写法:直接遍历,遇到val就删。时间复杂度 O(log n)时间复杂度 O(log n)时间复杂度 O(n^2)时间复杂度 O(n)
2024-05-09 10:58:27 208 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人