LeetCode
文章平均质量分 65
编程狂想曲
公众号:「编程狂想曲」,专注于算法及数据结构的分享
展开
-
图解 | LeetCode #143 重排链表
今天分享的题目有: LeetCode #876 链表的中间节点 LeetCode #206 反转链表 LeetCode #143 重排链表 01 LeetCode #876 链表的中间节点 题目描述: 给定一个头节点为 head 的非空单链表,返回链表的中间节点。 如果有两个中间节点,则返回第二个中间节点。 示例: 输入:[1,2,3,4,5] 输出:此列表中的节点 3 思路分析: 要找到链表的中间节点,可以定义两个指针,一个是慢指针slow,另一个是快指针fast。初始,慢指针slow和快原创 2021-03-05 20:35:49 · 390 阅读 · 0 评论 -
图解 | LeetCode #206 反转链表
题目描述: 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 思路分析: 对于题目给出的链表,简化如下: 由于只知道链表的头节点head,因此需要从头节点head开始反转。头节点head在反转之后,就成为了链表的尾节点,而尾节点的后继指针是指向null的。因此,需要定义一个空节点,在这里我们用prev表示。同时,对于当前考察的节点,我们用cur表示。 接着要做的就是,将cu原创 2021-03-05 20:15:29 · 148 阅读 · 0 评论 -
图解 | LeetCode #876 链表的中间节点
题目描述: 给定一个头节点为 head 的非空单链表,返回链表的中间节点。 如果有两个中间节点,则返回第二个中间节点。 示例: 输入:[1,2,3,4,5] 输出:此列表中的节点 3 思路分析: 要找到链表的中间节点,可以定义两个指针,一个是慢指针slow,另一个是快指针fast。初始,慢指针slow和快指针fast都指向链表的头节点。然后,快指针fast每次向前移动两步,慢指针slow每次向前移动一步,当快指针fast不能继续向前移动时,慢指针slow所指的节点就是中间节点。 对于节点个数为奇数的链表来说原创 2021-03-05 20:12:33 · 169 阅读 · 0 评论 -
图解 | LeetCode #61 旋转链表
题目描述: 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 示例1: 输入: 1->2->3->4->5->NULL, k = 2 输出: 4->5->1->2->3->NULL 解释: 向右旋转 1 步: 5->1->2->3->4->NULL 向右旋转 2 步: 4->5->1->2->3->NULL 示例 2: 输入: 0->1->2-&原创 2021-03-05 20:08:24 · 146 阅读 · 0 评论 -
图解 | LeetCode #19 删除链表的倒数第N个节点
题目描述: 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 思路分析: 示例给出的链表结构如下图所示: 要删除链表中的某个节点,需要知道其前一个节点。对于头节点来说,其没有前一个节点,因此,需定义虚拟头节点,如下图: 这里要删除的是链表中倒数第2个节点,其前一个节点是指针slow指向的节点。 那如何确定指针slow指向的位置呢?在这里还需引入指针fast,当指针fast指向null时,它与原创 2021-03-03 23:31:13 · 208 阅读 · 1 评论