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

原创 KMP算法

听完之后,你至能知道kmp算法的原理是什么样的。他是怎么做到比较的指针不需要回溯。并且听完之后你会求next的数组。到这里来应对一般校的kmp算法考题就足够了。这节课仅仅是初步理解,让你学完之后感觉眼前一亮。什么是kmp算法?就是快速的从一个主串中找出你想要的子串。下面的串叫做模式串。Camp算法就是从主串中快速找到模式串。kmp算法强调一个快字,不快的话叫做幼稚模式串匹配算法。(幼稚模式串匹配算法也是最直观的,最容易想到的算法)

2024-08-04 20:42:46 829

原创 【代码随想录】541. 反转字符串 II | 151. 反转字符串中的单词

规则:这个规则是给我们一个字符串。让我们把前2k段中前k段进行反转。如果末尾不够两k段,但是超过1k这个长度,则把前k段进行反转。如果没超过1k这个长度,则把尾部段进行反转。为什么很多同学在写这个代码的时候会写的很复杂?因为同学们在店里这个字符串的时候很习惯的去写i++。其实我们这道题在每次遍历的时候都是以2k进行增加的,每次都是2k段。所以这里没有必要去写i++是要写i+=2k,直接让i以2k去移动,在每次操作的时候操作前k个就可以了。相当于操作i到i+k段这个字符串的距离。

2024-07-30 12:00:40 1051

原创 【代码随想录】202. 快乐数 |454. 四数相加 II

divmod()

2024-07-29 23:13:06 886

原创 【代码随想录】242. 有效的字母异位词 349. 两个数组的交集

如0,100万,如果用数组来做映射的话,要用100万那么大的数组,但实际运用的只有三个。加了这个限制之后,这道题目用数组来求解,用哈希表的结构是比较合适的。当这里面的数值非常大的时候,我们想用数组来做映射就不合适了。然而,由于哈希表的性质,它在平均情况下的插入、删除和查找操作都具有常数时间复杂度(尽管在最坏情况下可能会退化到线性时间复杂度,但这通常不会发生)。它存储的元素是唯一的,且按照一定的顺序(默认情况下是升序,但可以通过自定义比较函数来改变)进行存储。也是基于红黑树实现的,但它允许存储重复的元素。

2024-07-24 21:27:13 577

原创 【代码随想录】142. 环形链表 II

快指针每次走两个节点。那么快指针一定先进入这个环,然后慢指针才进入这个环。快指针一定会去追慢指针。快指针每次相对于慢指针走一个节点,所以他们一定会相遇,而不会让快指针跳过慢指针。因为快指针每次相对于慢指针走两个节点可能就跳过了。快指针每次走两个节点,慢指针每次走一个节点。如果这个链表有环,那么他们一定会在环里相遇。如果一个链表没有环,是一条直线,快慢指针速度不同,那么快慢指针是不可能相遇的;除非这个链表有环让快指针绕圈了,随后慢指针也进入这个圈,然后两个指针相遇。如果快慢指针相遇了,说明这个链表有环。

2024-07-22 20:50:28 262

原创 【代码随想录】第二章 链表part02 24. 两两交换链表中的节点

注意,这里是交换链表的物理节点。而不是交换它的数值。如果链表的节点个数为奇数,则最后一个节点不需要处理。让我们在操作三四两个节点的时候,要将指针指向三的前一个节点。

2024-07-21 21:13:04 130

原创 【代码随想录】day04-1 203.移除链表元素 707.设计链表 206.反转链表

203.移除链表元素链表节点的定义,很多同学在面试的时候都写不好。这是因为平时在刷leetcode的时候,链表的节点都默认定义好了,直接用就行了,所以同学们都没有注意到链表的节点是如何定义的。性能分析链表的特性和数组的特性进行一个对比,如图所示:这道题就是给大家一个链表,移除链表中等于某个target的所有节点。然后返回这个链表的头节点。如果我们删除这个节点的话,让这个节点的前一个节点,指向这个节点的下一个节点。这样我们就把这个元素从列表中移除了。这个节点是c++的话,我们要手动把这个节点的内存给

2024-07-16 23:52:30 280

原创 【代码随想录】day04 59.螺旋矩阵II

把最后一个节点留给下一条边,作为下一条边的起始位置,大家会发现我转一圈,其实是坚持一个原则,这都是左闭右开,这样我四条边的遍历规则就统一了,把规则统一之后,代码就很好写了。Python中的一个列表推导式(list comprehension),用于创建一个二维列表(或称为矩阵),其大小为n×n,并且初始时所有元素都被初始化为0。模计算经常用于判断一个数是否可以被另一个数整除(如果余数为0,则可以整除),以及循环索引的计算(如循环遍历数组时,将索引保持在数组长度内的操作): 这是一个循环,循环n次。

2024-07-05 21:58:51 659

原创 【代码随想录】day03 27.移除元素

而是里面有一个计数器,你调用了erease之后,里面的计数器默认进行了--的操作,所以返回了4,实际上它的物理空间还是原来那样,最后一个元素,仅仅是没有做处理而已。而while循环则是通过循环条件来决定是否执行循环,如果循环条件是True的话就会一直执行循环,否则就会结束循环,所以while循环的适用场景是:你有一个循环条件,你知道只要这个条件成立就要循环执行某些操作,那在这种情况下使用while循环是最合适的。使用双指针的写法可以用O(n)的方式来实现删除数组中的元素(=erase的方式来删除元素)

2024-07-02 00:37:09 720

原创 【代码随想录】02数组,977.有序数组的平方;209.长度最小的子数组

终止位置随for循环一个个向后移动,什么时候移动起始位置?如果终止位置指向一个地方,集合中的元素大于等于target,说明这是符合条件的一个集合,知道长度之后,起始位置就可以向后移动了 ,这样来缩小目前的这个集合,看下一个集合是否符合条件。也就是说,当我们发现集合中的所有元素和大于等于target的时候,再去移动起始位置;通过动态调整起始位置来收集不同长度区间里边的和。接②:这也是滑动窗口的精华所在;滑动窗口最重要的一个思路就是。209.长度最小的子数组。

2024-06-28 01:23:16 174

原创 【代码随想录】01数组,704. 二分查找

【代码】【代码随想录】01数组,704. 二分查找。

2024-06-23 22:54:35 112

空空如也

空空如也

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

TA关注的人

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