![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
链表
LeetCode链表专栏
jiangkun0331
Bugs总是让我们无法心安
展开
-
【LeetCode】 876. 链表的中间结点 Java版
876. 链表的中间结点 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 解决思路: 定义两个节点,快慢节点; 快节点的一次走两步,慢节点一次走一步; 当fast == null 或者 fast.next为空的时候就说明fast走到链表尾巴了,这个时候slow就是链表的中间节点。 这里的fast 和fast,next的判断条件分别对...原创 2020-04-27 12:45:32 · 173 阅读 · 0 评论 -
【LeetCode】 206. 反转链表 Java版
206. 反转链表 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 解决思路: 需要定义四个节点; 为了解决反转当前节点的时候找不到前驱节点,那我们就需要一个节点来保存当前节点的前驱节点; 同时定义cur表示当前反转的节点; curNext是下一...原创 2020-04-27 12:30:47 · 178 阅读 · 0 评论 -
【LeetCode】 203. 移除链表元素 Java版
203. 移除链表元素 删除链表中等于给定值 val 的所有节点。 示例: 输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2->3->4->5 解决思路: 定义两个节点,一个prev来表示删除节点的先驱,cur表示要删除的节点; 在删除的时候,先考虑头节点后面的节点,如果先把头节点删除的话,头...原创 2020-04-27 11:59:18 · 521 阅读 · 0 评论 -
【LeetCode】 160. 相交链表 Java版
160. 相交链表 编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表: 解决思路: 先计算出两个链表的长度 让长的先走长的那一部分 此时两个链表一样长 两个链表一起走,相遇就是交点 Code: //先定义两个节点,假设pL为长的,pS为短的 ListNode pL = headA; ListNode pS = headB; i...原创 2020-04-26 18:16:21 · 183 阅读 · 0 评论 -
【LeetCode】 142. 环形链表 II Java版
142. 环形链表 II 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 说明:不允许修改给定的链表。 解决思路: 判断是否有环的思路还是和之前的一样:环形链表 在有环的情况下,此时fast和slow已经相遇,通过下面的推...原创 2020-04-26 17:59:54 · 228 阅读 · 0 评论 -
【LeetCode】 141. 环形链表 Java版
141. 环形链表 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 我们可以分两种情况来考虑问题: 链表长度为奇数或者链表长度为偶数 定义两个节点:快慢节点fast slow fast一次走两步,slow一次走一步 如果是奇数长度:那么fast.next 如果为...原创 2020-04-26 17:36:09 · 202 阅读 · 0 评论 -
【LeetCode】 21. 合并两个有序链表 Java版
21. 合并两个有序链表 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 思路很明确: 定义一个虚拟头节点把新的链表连接起来,同时定义一个temp节点记录链表的尾巴,找到小的就直接插入尾巴; 当两个链表都不空的...原创 2020-04-26 17:08:06 · 304 阅读 · 0 评论