自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Day12-回溯算法初步总结,分析树层循环和树枝循环

c)回溯算法的遍历过程:包括for循环(for循环就是遍历集合区间,可以理解一个节点有多少个孩子,这个for循环就执行多少次。)和递归操作,注意递归操作中的参数回溯,什么时候要i+1,什么时候不要,什么时候需要其他参数都视情况而定。a)返回值及参数:返回值通常是void,参数在写递归过程中当需要哪些时就填哪些,通常难以在开始就写完所需要的参数。除了40这道题之外,题目都类似,多了个used去重,用于树层去重,而不需要树枝去重,关键代码如下。1、因为回溯法解决的都是在集合中递归查找子集,

2025-03-18 19:37:09 347

原创 Day11-双端队列Deque操作,最小堆

思路:当是数字时将数字push进Deque中,当出现运算符,将Deque的前两个拿出来与该运算符进行计算后再push回Deque中。操作:1、当要push进的数字(此处均用下标)大于原Deque中的所有数字,则删除所有原Deque中的数字。思路并不难,与前面哈希表某题很接近,只不过多了个排序,这就用到最小堆,此题主要是熟悉最小堆的初始化和使用。关键思想是:无需在队列中维系所有数字,而只需要维系最大值。说的很复杂实则就是后缀表达式转化成中缀表达式。2、删除已滑动过的数字。

2025-03-03 18:12:02 267

原创 Day09-最最最难的一天,字符串操作,KMP算法

KMP分别代表Knuth,Morris和Pratt这三位学者,因为这个算法是这三位学者发明的。KMP算法中用到的next数组就是一个前缀表。前缀表的作用是记录模式串和文本串不匹配时,模式串应该从哪里再重新开始匹配。例如经典例子“要在文本串:aabaabaafa 中查找是否出现过一个模式串:aabaaf。在匹配到文本串的第二个b时,匹配不上了,而此时若暴力破解那就得重新匹配模式串了。而next数组(前缀表)的作用就表现出来了,无需重新匹配而可以从模式串里的第一个b开始匹配了。

2025-03-03 17:41:22 1601

原创 Day10-栈和队列基本操作

此处首先需要介绍更方便的Deque,它是一个双端队列接口,最常用实现类是LinkedList双端队列Deque:两端都可进出构造函数:Deque deque = new LinkedList();普通队列Queue:一端进另一端出构造函数:Queue queue = new LinkedList();或 Deque deque = new LinkedList();堆栈Stack:构造函数:Deque deque = new LinkedList();

2025-02-21 12:51:11 277

原创 Day08-认识字符串和字符串的基础操作

思路非常简单,但是要注意不要不要给另外的数组分配额外的空间,你必须原地修改输入数组,使用 O(1) 的额外空间解决这一问题(即不要新建数组)我觉得挺无聊的一道题,就是记录下多少个数字,然后新建数组时留下足够的位置供"number"放入。这题大家可能一看就知道可以用库函数快速完成,但是不建议使用,要了解库函数的内核。相比上一题就复杂了一点,每当遍历到第k个时进行上一题的操作。

2025-02-19 19:22:04 214

原创 Day07-(哈希表,双指针的使用,难度逐层升高)

b、双指针法:一层for循环,用一组双指针替代两层for循环。left指针从for循环下标index下一个开始,right从数组最后开始。将nums1和nums2凑一组,再将nums3和nums4凑一组,两两for循环得出一组数字,存入map容器。(为什么要用map容器:算出的第一组数字里不仅需要记录数字的数值还要记录该数字的个数用以计算最后组合的个数)完全类似上一题,加一层for循环处理第一个数,然后最后三个数当三数之和来做,四个for循环嵌套!中,但是在今天这题求的是数值,而Day06这题需要求的是。

2025-02-19 12:00:02 916

原创 Day-06 初识哈希表(好多容器操作不会)

初见这题(类比化学的同分异构体),基本没接触过哈希表算法的我,脑子里只有先排序,然后一一对应,这个思路就不讲了,要讲的是用哈希表的数组这一数据结构去做。将0-25设为a-z,遍历字符串s,字母出现时对应下标的数组就+1,然后遍历另一个字符串t,字母出现时对应下标的数组就-1,最后遍历数组,如若是有效的字母异位词则数组所有数字为1,反之不是。二、(Set类容器)349. 两个数组的交集 - 力扣(LeetCode) 关注题干特点,无序,不重复,那显然用Set类容器比较合适,而最常用的是

2025-02-17 23:39:37 982

原创 Day04-链表操作(中高阶使用,多为双指针法)

思路相当难想到,同样使用的双指针快慢指针的用法,设置快指针一次走两个节点(两个是为了防止快指针跳过慢指针到了慢指针后面),慢指针一次走一个节点。如果有环形,可以理解为两个人在跑圈,他们迟早会相遇。设置进入环之前的路程为x,从环起点到第一次相遇的路程为y,环减去y的剩余路程为z,通过时间相等立方程式x+y = x + n(y+z)(n是因为快指针在慢指针进圈之前就跑了很多圈)(为什么慢指针路程是x+y而不是x+m(y+z)(m<n),简单理解,快指针必然在慢指针进入后一圈内追上慢指针)由此令n=1得,!

2025-02-17 12:29:41 475

原创 Day03-链表初始化&基础操作(从未接触过的领域)

没了解过链表这一数据结构的各位老哥老姐们,初遇这题显然是会相当懵的,当然这也包括我,除了大一上数据结构课时浅薄地了解了一下。那么遇到这题应该怎么入手呢,首先,在脑子里要清晰地用自己的方式把链表画出来,最常见的是一个正方形代表节点,一个箭头代表指针,每一题都可以用这个图形做题,脑子想不出来就用笔画画嘛老哥老姐们。大家艰难搞懂了上一题之后,信心满满地打开这题,然后这题出了个破防者,这题在我看来,比上一题难了不少,但是务必务必要攻克哦各位老哥老姐们。接下来这一题要学会两个方法哦,分别是双指针法和递归法。

2025-02-14 23:06:54 450

原创 Day02-(滑动窗口,前缀和)今天题目思路不难想,代码实现有点复杂

所以大家要学会这个技巧,前缀和,这是道经典经典例题,必须搞懂,不多讲,看代码找个例子就懂了,还是不懂私信我或者在评论区提问,我看到会回答。时间复杂度O(n),最推荐的,也是我想要分享的思路,相比思路一,类似于将起点的for遍历剪枝了,可以把区间想象为一个会变焦的相机,不断地扫过数组,若相机里的内容太多,就把镜头缩小(起点向重点移动)但仍要符合题目要求的内容要求,内容不足时,镜头变大(终点向后移动)总的来说,题目比昨天略难,有些技巧和思路得学会,大家继续加油!

2025-02-13 21:52:41 502

原创 Day1-恢复手感,二分法区间细节,双指针

左闭右开区间用while(left<right),mid = right(由于右开区间此时已经不包括nums[mid]了,因此可以不-1 , mid = left + 1;1.主要是感悟了while(left<right)和while(left<=right)的区别以及何时mid = right - 1什么时候 = right(left同理)结论:快指针从旧数组读数据,慢指针写数据入新数组(当然读和写有时可以在同一个数组,如力扣27题)(个人浅薄理解,快指针找菜种子,慢指针播种)

2025-02-12 20:48:33 283 1

空空如也

空空如也

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

TA关注的人

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