- 博客(7)
- 收藏
- 关注
原创 leetcode之KMP算法理解
刷了重复的字符串这道题,但是这道题做出来很简单,只需要两个指针一个指向需要查验的数组另一个指向needle数组。我们这时候要引出一个指针叫做next指针,next指针是什么?但是这样的话每次都要从头遍历needle数组,会耗费更多的时间。首先是前后缀,前缀表就是不包括最后一个元素的数组的子表。这里不得不提到KMP算法,那么这个算法是做什么的呢?那么怎么才能不去每次便利这个needle数组呢?后缀同理,就是不包括第一个元素。那么知道这个有什么用呢?
2024-04-27 18:02:37 247 2
原创 leetcode哈希表刷题(1)
这个题目没什么好说的,定义一个26个元素的数组就可以,然后通过遍历另外两个字符串从而判断是否有相同字符,然后统计次数就可以。唯一的重点就是字符类型可以直接和a比大小从而得出差值,这样可以直接定位数组。
2024-04-23 16:17:37 787
原创 leetcode链表题目练习(续)
第二种方法我认为比较巧妙因为它相当于先将尺子长度固定再放上去量取,我们平时做题既要想到一前一后连着造短尺子一段一段量取也要想着直接固定长度再量取。解决方法:长链表的前几个元素肯定不能是相交的部分,不然不可能后面的节点一样。这个肯定要用到遍历,这是无法躲掉的,但是两段for循环是否有点笨拙?相交其实就是找两段他们开始相同的那个节点(注意不是val)这道题是我遇到链表里面最难的题目。思路:怎么先找到倒数第n个节点。首先这道题有两个难点。
2024-04-22 12:12:57 677
原创 leetcode链表操作题目练习
先定义一个null 的指针,再定义一个head 的指针,从而一前一后判定过去。2. 添加虚拟头节点有助于判断头节点,这一点要多去思考多用。需要添加一个判断头节点的限制条件。同时,循环的限制条件变成了。因为需要判断头节点是不是空。接下来我把完成的代码放出来。
2024-04-21 20:48:55 749
原创 leetcode有序数组的平方+长度最小的子数组
本题仍然是有两种解法,一种暴力解法并不难,就是套两个for循环打擂台,但是时间复杂度很高。第二种快很多的写法是通过双指针法来实现,这里我主要来说第二种写法。这是我的第一次写的代码,问题很多,首先,判定条件有问题,没办法应对第一个到绝对值比倒数第二个小的情况即是[1,2,3,4]这样的数组;其次我的添加全部为push_back这样会需要创建第二个数组来应对前一个数组的相反位置的情况。第二次的代码虽然改了判定条件但是循环仍然有问题,并且中间位置的数是一个很大的问题,这一遍甚至还没有通过。
2024-04-19 00:38:09 677
原创 leetcode 二分法查找和移除元素
先把正确答案放出来(取前不取后)使用数组的时候要很注意是否超出数组的长度限制:例如while循环这一句我有一种错误写法和两种正确写法接下来是取后不取前两种方法的主要区别是while判定的时候的相等和middle在不取后的时候就可以直接middle = head。
2024-04-17 20:53:35 885
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人