- 博客(9)
- 收藏
- 关注
原创 二叉树刷题小结
if(!***********逻辑代码*************if(pre)pre = root;if(root)***********逻辑代码*************if(pre)pre = root;if(!***********逻辑代码*************if(pre)pre = root;
2024-03-12 13:30:40 637
原创 单调栈——求最近的最值元素
这里给出一个经验写法:如果求的是该元素最近的左边(上一个)的最值:就从前往后循环,将栈底向左,栈顶向右。如果求的是该元素最近的右边(下一个)的最值:就从后往前循环,将栈底向右,栈顶向左。假设现在数组是 arr = {1,4,2,3,1},其中2是最小值的子集有{2},{2,3},{4,2},{4,2,3},所以2的贡献值是2*4 = 8.对于这样的一个结构:首先我们可以发现:后进入的数会最先出去,先进入的数最后出去,这是栈的结构。注意: 在计算贡献的时候,如果本身也算进去的话,下标从-1开始,到n结束。
2023-11-27 16:48:33 83 1
原创 位运算用法小结
面试题 05.01. 插入主观想法是将N的第i到j位全部清0,然后或上M就可以了(0或 任何数等于本身)如何清空呢?用0&就行了。但要保证其他位不变,怎么办呢?&1就行了。比如我们要让1011000的第5位的1变为0,我们只需要1011000 & 1101111即可。而1101111可以由 10000 取反而来,10000又可以由1左移4位而来。k++)注意:二进制的表示中,是从0位开始数,与计算机的规则是一样的。所以左移x位就是x本事,不要去考虑+1,-1的问题。
2023-11-22 18:02:22 112
原创 滑动窗口算法解释与例题
理解:滑动窗口是双指针的一种应用,本质上是维护了一段数据区间,区间的左右端点移动是单调的。具体含义是:一个指针移动,另一个指针只能往一个方向移动,不能两个方向来回移动。实质:通过发现题目的一些单调性质,对暴力循环的一种简化,时间复杂度从平方降到一次方。实现:可以基于双端队列,也可以基于左右指针,优先考虑左右指针更节省空间,但是如果需要对窗口中的元素进行一定的处理操作,那么选择双端队列实现。左右指针是通过左指针代表左边界,右指针代表右边界,二者同时向右移动的基础原理。
2023-09-18 20:18:52 143
原创 序列DP总结 (子序列问题,编辑距离,回文子串)
DP问题没见过很难理解,但是模型也很多,写题的时候可以多套用之前模型的思路。这里结合AcWing闫总跟代码随想录卡哥的思想去理解序列DP。
2023-08-21 08:30:00 338 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人