算法C++
文章平均质量分 72
学习算法之路
chlorine5
脚下的路更重要,我要开始与自己赛跑了
展开
-
【力扣精选算法100道】——带你了解(数组模拟栈)算法
字符串 t 中遇到#就删除栈顶元素d,然后遍历下一个元素,如果不等于# 就继续入栈c。字符串 t 中遇到#就删除栈顶元素d,然后遍历下一个元素,如果不等于# 就继续入栈。字符串 s中遇到 # 就删除栈顶元素,然后遍历下一个元素,如果不等于#,就入栈c。字符串 s中遇到 # 就删除栈顶元素,然后遍历下一个元素,如果不等于#,就入栈。最终字符串s="c" t="ac" 此时s不等于t,返回false。字符串中删除最后一个字符用到 pop.back()。如果遇到#那么就删除前面的字符,💻比较含退格的字符串。原创 2024-03-18 23:01:25 · 224 阅读 · 0 评论 -
【力扣精选算法100道】——二进制求和
遵循二进制加法法则,如果俩者相加等于2那么就“逢2进1”。如果俩者相加不等于2,那么就还是相加的结果(无非是0+0=0或者0+1=1),如果最高位相加等于2,也依旧逢2进1。因为字符串a和b每个下标对应的元素是char型,我们要相加是int类型,需要将。1.我们首先再字符串a和字符串b中分别定义一个指标从最后一位开始,然后往前相加。类型,相加字符串a中的字符更新t,相加字符串b中的字符更新t。,然后当时的类型是char类型,我们需要。数字转字符 int c。的话,那么我们需要将其。原创 2024-03-12 23:50:46 · 400 阅读 · 0 评论 -
【力扣精选算法100道】——存在重复元素 1 or 2 (哈希)
这一题和上一题的其实就增加了多了一个条件,就是找到重复的数字之后,我们还要判断一下,这俩个相同的数字的下标之差是不是小于等于k,如果小于等于k,那么就返回true,如果大于k,那么返回false。所以我们用Set容器,我们遍历数组,如果存在,那么就返回true,如果不存在,那么就将这个元素插入到hash中去。这一题不仅要存入hash表中存入当前i下标的值,还要存入下标,所以这题需要用到map键值对,第一个代表对应的值,第二个代表下标。数组中存在重复元素的值那么就返回true,否则返回false即可。原创 2024-03-04 18:39:06 · 383 阅读 · 0 评论 -
【力扣精选算法100道】——判定是否互为字符重排(哈希专题)
你看如果a存在s1中,b不存在s1中,那么a在s1中的个数是不是1,b在s1中的个数是不是0,如果我们遍历s2的时候,s2中存在b,那么先让b对应的个数在哈希表中--,b原先的个数是0,--之后是-1,那么小于0,我们就直接返回false,说明s1是不存在b的。我们输入俩个字符串,当俩个字符串按照字母顺序从小到大排序之后是一样的,那么说明俩个字符串重排。我们将s1和s2字符串排序,如果最后相等,那么就是重排字符串,如果最后不相等,那么就不是。如果s1和s2字符串长度不相等,那么就直接返回false即可。原创 2024-03-04 17:47:35 · 273 阅读 · 0 评论 -
力扣精选算法100道——排序数组(分治快排)
🚩了解题意本题的题意很简单,就是将nums数组排成升序即可。🚩算法原理本题和颜色分类那个题目很相似,就是从小到大排序。只不过不同的是,这次不是取nums[i]和左右指针相比较了,本题用的是key关键字,而关键字是随机的,不是特定的哪个值。依旧利用的是三种判断思路。分治快排思想,每次key进行划分,<key和>key进行划分,<key再进行划分,>key也进行划分。🎈取随机值在快速排序算法中,为了提高算法的性能和避免出现最坏情况(即当输入数组已经有序时造成快速排序的时间复杂度退化为O(n^2)),原创 2024-02-29 12:05:41 · 885 阅读 · 0 评论 -
力扣精选算法100道——颜色分类(双指针和三指针俩种方法解决此题)
利用双指针和三指针俩种方法解决本题原创 2024-02-29 11:00:10 · 619 阅读 · 0 评论 -
力扣精选100道——外观数列(模拟专题)
前面一个数是记录连续相同数字的个数,后面的数是记录当前的数,那么我们这一题很明显是用双指针,left和right都是从0开始,遇到相同的数,right++,直到遇到不同的数,我们获取的连续相同的数字长度是right-left,然后left对应的值就是【】右边代表当前的数字,right-left就是几个,left对应的值就是几,几个几,就是这样读。如果出现11123311,这种1不是连续的我们不用加,我们只要连续相同的,不是连续的后续出现了相同的数字也是分开读了。该题的下面充分的给你说明了这个题目的意思。原创 2024-02-23 12:59:16 · 471 阅读 · 0 评论 -
力扣精选算法100道——Z字形变换(模拟专题)
我们看到BHN绿色线指向的,B和H相差6,H和N相差6,和第一行和最后一行一样的思路,那么我们中间的FL和EK紫色线画的,我们看到F和L相差的结果也是6,EK相差的结果也是6,所以还是再循环的时候加上公差d,那么我们如何确定F和E下标的值呢?所以我们进行依次循环,处理中间行,从k=1开始,第二行的第二个元素是d-k,到k=2时,第三行的第三个元素是d-k,然后当k=n-1=3的时候就结束了,因为第四行是最后一行。我们看到,d=2n-2,n等于3的时候d=4,公差是4,确实验证了我们的猜想。原创 2024-02-21 20:37:02 · 976 阅读 · 0 评论 -
力扣精选算法100道——提莫攻击(模拟专题)
我们看到俩次攻击时间之差是duration(前提是俩者相减大于等于duration)。3和7的差距是大于duration,所以可以中毒dauration秒。数组相邻俩者之差x>=duration ret+=duration。如果俩次攻击的时间之差是1(前提是俩者相减小于duration)数组相邻俩者之差x<duration ret+=x。中毒时间记为ret,相邻俩数之差为x。再学几天就得返校啦.....给定一个非递减的数组。原创 2024-02-21 00:05:06 · 555 阅读 · 0 评论 -
力扣精选算法100道——矩阵区域和 (前缀和专题)
本题都是从1开始的,所以我们要减去加上那个数,需要将i,j都减1,我们打个比方我们要加上 下标[0][20],但是本题是从1开始,那么对应的i=1 j=1,我们要加上对应的值的话,我们需要将i-1,j-1.否则会导致结果不对。就像图中所展现的一样,1的位置开始向外扩展k个单位,就是绿色包围的地方,超过的范围区域不记,剩下的是2,4,5,1(这里需要加上1),相加的结果是12,所以ret结果数组的第一行第一列的数字是12.为右下角顶点的子矩阵的和。的二维 vector,并将其中的每个元素初始化为 0。原创 2024-02-13 21:24:58 · 1568 阅读 · 1 评论 -
力扣精选算法100道——【模板】前缀和 (二维)
二维前缀和模板(先预求各个子区间的前缀和,然后利用前缀和,算指定的区间的前缀和)原创 2024-02-13 20:17:06 · 647 阅读 · 3 评论 -
力扣精选算法100道——【模板】前缀和(一维)
我们需要将下标设定是1开始的,我们平常的数组定义是第一个数的下标是0,而这里我们需要手动设定下标从1开始 vector(n+1)这里我们看到数组中的取值是-10^9~10^9,所以我们需要用到long long 而不是int类型。如果有q次查询,我们需要依次q--,再一次循环中依次输入l和r的值。第二行 1 2 4 表示 n=3个整数 (长度为n的数组各个数)第三行和第四行(有几行代表几次查询) 分别是1,2和 2,3。第一行的3和2,3代表行数,2代表q次查询(查询的次数)原创 2024-02-07 21:49:02 · 711 阅读 · 0 评论 -
力扣精选算法100道—— 连续数组(前缀和专题)
深度解析连续数组原创 2024-02-07 16:36:19 · 1138 阅读 · 0 评论 -
力扣精选算法100道——和为 K 的子数组[前缀和专题]
例如我们计算数组nums[0]+nums[1]+nums[2]时,nums[1]+nums[2]被算了一次,当第二次循环计算nums[1]+nums[2]的时候,它又被计算了一次。我们疑惑的是为什么sum-k=1也ret++,因为我们上面说过了,sum-k=1,其实就是sum-1=k,如果前面存在sum=1的话,剩下的区间区间和等于k。, 比如[1,1,1],和为2的子数组有俩个,比如第一个1和第二个1,还有第二个1和第三个1,都是属于俩种不同的情况。双循环,求出所有子数组的和,记录等于k的次数。原创 2024-02-06 14:48:28 · 849 阅读 · 0 评论 -
力扣精选算法100道——x的平方根(二分查找专题)
利用二分查找的(区间右端点)模板来解析x的平方根题目,一分钟秒杀。原创 2024-01-24 00:18:14 · 456 阅读 · 1 评论 -
力扣精选算法100题——在排序数组中查找元素的第一个和最后一个位置(二分查找专题)
二分查找算法详细解析原创 2024-01-23 23:42:16 · 1116 阅读 · 0 评论 -
力扣精选算法100题——最小覆盖子串(滑动窗口专题)
最小覆盖子串(滑动窗口+哈希)原创 2024-01-21 21:05:58 · 385 阅读 · 0 评论 -
力扣精选算法100题——串联所有单词的字串(滑动窗口专题)
“找到字符串中所有字母异位词”和”串联所有单词的字串“这2个题目都是一样的思路。原创 2024-01-20 23:52:13 · 567 阅读 · 0 评论 -
力扣精选算法100题——长度最小的子数组(滑动窗口专题)
长度最小的子数组(滑动窗口优化)暴力解法和滑动窗口进行优化操作图解。原创 2024-01-19 12:06:55 · 337 阅读 · 0 评论 -
力扣精选算法100题——找到字符串中所有字母异位词(滑动窗口专题)
找到字符串中所有字母异位词(哈希+滑动窗口)原创 2024-01-18 22:50:40 · 929 阅读 · 0 评论 -
力扣精选算法100题——四数之和(双指针专题)
四数之和的算法原理建立在三数之和的算法原理之上。原创 2024-01-18 13:02:29 · 489 阅读 · 0 评论 -
力扣精选算法100题——等于目标值的两个数or三数之和(双指针专题)
俩数等于目标值,和三数之和 都是用到左右指针算法来解决。原创 2024-01-16 21:20:57 · 440 阅读 · 4 评论 -
力扣精选算法100题——水果成篮(滑动窗口专题)
水果成篮————包括 滑动窗口模板分析,俩种解法(哈希+暴力枚举)(滑动窗口+哈希)原创 2024-01-15 14:25:38 · 1449 阅读 · 5 评论