自定义博客皮肤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)
  • 收藏
  • 关注

原创 滑动窗口详解

就是还有个东西是,比如t中c出现了3次,我们每次在s中滑动窗口的时候,每次c出现一次,我们window里的c计数都加一次,只有当window里c出现3次的时候也就是和t一样,我们才表明,ok这个c出现完了。在两个指针中间的部分就是一个窗口,我们动的是左右指针,让窗口动态的扩大或者缩小,这样就实现了滑动。再看收缩策略,根据前面的,每次每个我们要找的元素都出现了他们该有的次数后我们就可以收缩窗口了。首先这里先把必要的东西拿出来,左右指针,t的信息,窗口内的信息都创建好,然后收集t的信息。

2025-05-17 11:35:21 476

原创 说人话的leetcode.021 .023合并有序链表

那么你看这里,关于判断谁大谁小,我们得拿到指针,根据指针指向的val,判断各自的val,同时还得分情况讨论。那这两条链都是有序的啊,我们肯定是两边最小的开始比啊,这都能想到把?那么问题来了,现在知道的是b1一定比b0大,b1一定放b0后面。也就是我草你最小的都比我大,那你看我在一个呢是不是也比我大?盘子上两块区域,两个链表的人分别吧自己东西放在上面,比谁更小。谁更小就先把更小的放进结果箱子,然后自己再拿下一个继续比。我们比较an 和 bn ,看看谁小,谁就先放在新链上。那手里还有b0啊,b0跟谁比呢?

2025-05-14 20:24:16 295

原创 数据结构与算法梳理——树结构——堆

如果使用C++基本数据类型,可以直接使用自带的less和greater这两个仿函数(默认使用的是less,就是构造大顶堆,元素小于当前节点时下沉)。上面我们看完了二叉堆的性质,你会发现我创建一个二叉堆后它自然会让整体保持二叉堆的性质,不管你有没有增加元素或者删减元素他都可以维持二叉堆的性质。那么循环条件就很简单,要么是我到底了,要么是我已经是我和我的子节点比最小的值了。我们已知的是,只有顶元素为空,其他都是复合堆结构的啊,感觉其实不需要动啊!那么交换两索引对应的值,然后我的索引变成父节点的索引。

2025-05-14 15:39:50 990

原创 Leetcode.082.82. 删除排序链表中的重复元素 II

出界的话循环终止,表明i就是最后一一个人,且前面的情况表明这个是不重复的人,因为上一层j没出界表明找到了不重复的。再然后就是一个循环了去移动,肯定是探针不能为空啊,就是表明我探针到达最后的位置了都没人了那这个队列我肯定查完了。所以这里要判断一下要是J不等于nullptr就可以继续,出界了就跳过。那么就有两种情况,第一,j没出界,没出界自然继续啊,i = j;这里有个while循环,很明显我们需要判断一下,因为j在这里就可能出界。一个是探针,谈谈前面的人和本尊想不想等,不相等就给本尊拿到结果链上。

2025-05-12 22:48:59 315

原创 C++ 图入门

pair的用法在哈希表,或者说map那一节我们用过。

2025-04-21 17:05:28 621

原创 动态规划小点-01背包详解

那么翻译一下这段话:面前一堆东西,各不重样,你【选择】拿什么放进你容量有限的包,从而得到【结果】,找出这群结果中价值最大的那一种【选择】。桌上的物品,这里可以把他们都看成是连续放在一起的,比如你可以想象,一张长条形的餐桌。要是我包的容量根本放不下我眼前的物品了我又怎么需要花时间去考虑我到底要不要装它呢?首先上来一句话,我个人感觉动态规划最重要的两点,就是【选择】和【结果】。同时还有个东西在限制我,我的包【容量】够不够让我去考虑这个当前的物品。要是我背包的容量都不够装这个,我只能【放弃】【选择】!

2025-04-14 16:18:01 270

原创 递归入门——教你从小白开始学习递归

递归函数对吧?干嘛的?反转链表返回啥?返回翻转后的头结点的地址。那么翻转后的头结点的地址是啥?那不就是原本的尾节点吗?

2025-04-04 22:55:08 508

原创 说人话的leetocode.225 用队列实现栈

先看原题:同理,在解题之前先看用法。

2025-03-25 17:34:28 183

原创 说人话的leetcode 232.用栈实现队列

先看原题:在想这道题该怎么做之前,首先学习stack该怎么使用!

2025-03-25 16:34:35 254

原创 说人话的leetcode.020 you

如果发现有括号了,你就看着顺序是不是和你想的一样,也就是看栈上的第一个东西是不是遍历到的这个字符。强调的是我一定的按照顺序匹配,什么时候左括号来了,反过来什么时候右括号出了。也就是说你明白,根据左括号的顺序,你心里知道其对应的有效括号的顺序是啥样。那么还是前面那句话,左括号什么时候进的,右括号就反过来什么时候出。那是不是说,只要这个顺序不是你想的顺序,那他就不是有效括号?但是哈希有个问题,三种结构,数组,set,map。如果说是左括号,就生成你心中觉得的顺序,即压栈。没顺序啊,不够体现这种括号的匹配。

2025-03-24 22:42:17 236

原创 说人话的leetcode.049 字母异位词分组

sort()是 C++ 标准库中的一个排序函数,可以快速将数组、容器(如vector)中的元素按照你想要的顺序排列。将[3,1,4,2]排序为[1,2,3,4](升序)将排序为(字典序)所以你看,这玩意多智能?#include <algorithm> // 必须包含这个头文件// 使用标准命名空间sort(起始地址, 结束地址的下一位, 比较函数(可选));起始地址:要排序的第一个元素的位置(指针或迭代器)结束地址的下一位:要排序的最后一个元素的下一个位置比较函数(可选)

2025-03-24 22:05:39 881

原创 说人话的leetcode.242 有效的字母异味词

一个是把每一位的标志用数组存起来,还有一种是创建其中一个字符串的拷贝,找到一个删一个,我觉得这个比较简单。这里其实用数组很方便,因为26个字母是连续的,且ASCII码也是连续的。所以第一次遍历s,哪个元素出现就在其对应的数组位置上加1。一加一减,要是相同的话,这个哈希数组的每一项应该都是0。第二次遍历t,哪个元素出现就在其对应的数组位置上减1。所以其实建一个英文字母表就是,0对应a,15对应z。先不管进阶,也不管学没学过哈希,暴力解法怎么解?常见的哈希结构就三个,数组,map,set。

2025-03-10 11:37:10 325

原创 说人话的leetcode.086——分隔链表

因为断开了的话,cur该去哪呢?可能还有点不那么完美的地方,留给读者大神们自行更正了抱拳!上面里面我们是手动让cur位移去下一个的,位移完了才断开。一直到原本的链表拆完了,这下左右两条链表都结束了。首先我们先有一个游标,指针cur从第一个节点开始。拆下来,看,如果他比目标值小,挂在左边的新链表上。然后把左右链表,左边链表的尾连右链表的头。这题目其实我觉得不难,最关键的点是什么?这就是链表灵活的地方。到这里基本上这题目就结束了。如果大,放在右边的新链表上。如果你还没明白那我们继续。所以都可以,看你自己喜好。

2025-03-08 17:04:43 149

原创 说人话的leetcode.024——两两交换链表节点

先看原题:其实这题和之前的一道题很像,非常像。但是没关系后面再说。

2025-03-08 16:03:57 727

空空如也

空空如也

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

TA关注的人

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