![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
双指针
KroneX
ACM退役选手,热爱优雅、高效、有创造力的技术,本博客记录题解,编程tips,计算机相关知识,心得等。
展开
-
【leetcode】19. 删除链表的倒数第N个节点(remove-nth-node-from-end-of-list)(双指针)[中等]
链接https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/耗时解题:8 min题解:14 min题意给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。思路要删除倒数第 n 个节点,需要先找到它前面的那个节点,即倒数第 n+1 个节点,快慢指针可以做到。但需要注意的是,倒数第 n 个节点可能是头节点,它没有前一个节点,需要特殊判断一下。先将快指针移动 n 次,到达第 n 个节点后面,如果指向空,说明原创 2020-10-18 09:08:17 · 149 阅读 · 0 评论 -
【leetcode】977. 有序数组的平方(squares-of-a-sorted-array)(双指针)[简单]
链接https://leetcode-cn.com/problems/squares-of-a-sorted-array/耗时解题:9 min题解:18 min题意给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。思路刚开始没有想清楚,直接上手写的,所以我的思路有点复杂 ???? 。非常不建议用。数组中有正有负的时候,找到正负分割的地方,或者 0 的位置。然后用双指针。数组中元素非正,平方倒放。数组中元素非负,平方正放。时间复杂度:O原创 2020-10-16 23:51:26 · 232 阅读 · 0 评论 -
【leetcode】141. 环形链表(linked-list-cycle)(双指针)[简单]
链接https://leetcode-cn.com/problems/linked-list-cycle/耗时解题:6 min题解:7 min题意给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回原创 2020-10-09 12:38:12 · 194 阅读 · 0 评论 -
【leetcode】344. 反转字符串(reverse-string)(双指针)[简单]
链接https://leetcode-cn.com/problems/reverse-string/耗时解题:3 min题解:6 min题意编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。思路详见代码。时间复杂度:O(n)O(n)O(n)AC代码class Solution {原创 2020-10-08 14:00:55 · 134 阅读 · 0 评论 -
【leetcode】283. 移动零(move-zeroes)(双指针)[简单]
链接https://leetcode-cn.com/problems/move-zeroes/耗时解题:9 min题解:5 min题意给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。思路设置两个指针,一个指针从头出发找 0,找到 0 以后,另一个指针从这个指针的下一个位置出发找第一个 非0元素,找到后互换这两个指针指向元素的位置。直到第二个指针找不到 非0元素为止。时间复杂度原创 2020-10-06 14:35:27 · 187 阅读 · 0 评论 -
【leetcode】234. 回文链表(palindrome-linked-list)(双指针)[简单]
链接https://leetcode-cn.com/problems/palindrome-linked-list/耗时解题:15 min题解:5 min题意请判断一个链表是否为回文链表。进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?思路原地翻转链表的前半部分,然后比较 翻转后的前半部分 和 后半部分 是否相同。时间复杂度:O(n)O(n)O(n)AC代码/** * Definition for singly-linked list. * struct原创 2020-10-04 20:06:04 · 145 阅读 · 0 评论 -
【leetcode】剑指 Offer 22. 链表中倒数第k个节点(lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof)(双指针)[简单]
链接https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/耗时解题:7 min题解:3 min题意输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。思路快慢指针,快指针先向后移动 k 次,然后快慢指针同时移动,原创 2020-10-04 18:59:19 · 198 阅读 · 0 评论 -
【leetcode】350. 两个数组的交集 II(intersection-of-two-arrays-ii)(双指针)[简单]
链接https://leetcode-cn.com/problems/intersection-of-two-arrays-ii/耗时解题:10 min题解:5 min题意给定两个数组,编写一个函数来计算它们的交集。思路对两个数组分别排序。然后使用两个指针从头到尾扫描,如果两指针指向的元素相等,将这个元素加入答案,并将两指针同时向后移一位;若不相等,将较小元素对应的指针向后移一位。AC代码class Solution {public: vector<int> int原创 2020-07-13 10:48:27 · 189 阅读 · 0 评论 -
【leetcode】26. 删除排序数组中的重复项(remove-duplicates-from-sorted-array)(双指针)[简单]
链接https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/题意给定一个 排序数组,在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,在使用 O(1) 额外空间的条件下完成。思路设置两个指针,j 指向目前为止不重复的最后一个元素,i 为移动指针,向后找不...原创 2019-12-10 18:51:59 · 153 阅读 · 0 评论