
双指针
洞阳
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
392. Is Subsequence
如果对大量的s字符串都按照上面的方法处理,显然是低效的。在t中查找下一个字符的操作耗费大量时间,每个新的s都要做这个重复的工作,这个事情本身只和t字符串自身的性质以及字符集有关,和s字符串无关。可以对t预处理,求出下一个字符的位置,每次只需要查询这个表即可。要通过这道题很容易,双指针法即可解决。进阶的问题很有意思。原创 2025-05-17 18:11:07 · 321 阅读 · 0 评论 -
leetcode 18. 四数之和
和用同样的方法。有两个注意点。原创 2025-05-12 15:07:51 · 374 阅读 · 0 评论 -
leetcode 15. 三数之和
【代码】leetcode 15. 三数之和。原创 2025-05-11 23:39:29 · 554 阅读 · 0 评论 -
leetcode 141. Linked List Cycle
用哈希表也可以解决,但真正考察的是用快慢指针法。原创 2025-05-07 22:36:04 · 523 阅读 · 0 评论 -
leetcode 142. Linked List Cycle II
这个方法很容易想到,但需要O(N)的空间。双指针法判断是否有环只需要快慢指针就可以。要确定环的位置,还需要考虑数量关系。具体推到见LeetCode官方题解。原创 2025-05-07 22:15:24 · 522 阅读 · 0 评论 -
滑动窗口leetcode 209和76
【代码】滑动窗口leetcode 209和76。原创 2025-05-02 22:00:47 · 604 阅读 · 0 评论 -
leetcode 977. Squares of a Sorted Array
用right表示原数组中负数和非负数的分界线。nums[0,right-1]的是负数,nums[right,nums.size()-1]是非负数。然后用合并两个有序数组的方法。合并即可。原创 2025-05-01 21:44:12 · 321 阅读 · 0 评论 -
leetcode 2516. 每种字符至少取 K 个
可以转化为求按照题目要求从两端取走字符后,中间部分的最大长度。中间部分就是一个滑动窗口。原创 2025-04-29 22:17:14 · 321 阅读 · 0 评论 -
leetcode 143. 重排链表
容易想到的做法是,把后半部分链表反转后的链表和原来的前半部分链表合并,即可得到想要的结果。需要先找链表的中间结点,参考。反转链表可以用正统的反转链表的方法(leetcode官方即用的此法),也可以用栈来实现。最后一定要把tail->next置为nullptr,不然结果链表中会出现环路。原创 2025-04-28 16:57:58 · 219 阅读 · 0 评论 -
链表leetcode 203、237、2095
【代码】链表leetcode 203、237、2095。原创 2025-04-27 23:47:06 · 233 阅读 · 0 评论 -
leetcode 876. 链表的中间结点
这道题虽然简单,但是是进阶题目的基础,例如第2095题。本题作为找链表中间结点的标准方法。原创 2025-04-28 13:39:34 · 272 阅读 · 0 评论 -
leetcode 19. 删除链表的倒数第 N 个结点
先从头到尾遍历链表,得到链表的长度count,结点编号从1开始起算的话,第(count - n + 1)个结点就是要删除的结点。leetcode官方题解,给出的办法是再遍历一次,遍历到第count-n+1个结点就可以做删除操作了。我用的是用空间换时间,第一次遍历的时候用哈希表把所有结点的地址存起来,哈希键就是结点的序号,这样就不用第二次遍历链表,但同时增加了空间开销。题目说结点的数目是1到30个,所以哈希表ListNode* nodes[31]。原创 2025-04-28 13:07:37 · 483 阅读 · 0 评论