LeetCode|LeetCode 876. 链表的中间结点
给定一个带有头结点 head
的非空单链表,返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。
示例 1:
输入:[1,2,3,4,5]
输出:此列表中的结点 3
(序列化形式:[3,4,5]
)
返回的结点值为 3
。 (测评系统对该结点序列化表述是 [3,4,5]
)。
注意,我们返回了一个 ListNode
类型的对象 ans
,这样:ans.val = 3, ans.next.val = 4, ans.next.next.val = 5
, 以及ans.next.next.next = NULL
.
【LeetCode|LeetCode 876. 链表的中间结点】示例 2:
输入:[1,2,3,4,5,6]
输出:此列表中的结点 4
(序列化形式:[4,5,6]
)
由于该列表有两个中间结点,值分别为 3
和 4
,我们返回第二个结点。
提示:
- 给定链表的结点数介于
1
和100
之间。
快慢指针法
:/**
* Definition for singly-linked list.
* public class ListNode {
*int val;
*ListNode next;
*ListNode(int x) { val = x;
}
* }
*/
class Solution {
public ListNode middleNode(ListNode head){
ListNode p1 = head, p2 = head;
boolean go = false;
while(p1 != null){
p1 = p1.next;
if(go)
p2 = p2.next;
go = !go;
}
return p2;
}
}
文章图片
推荐阅读
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- leetcode|leetcode 92. 反转链表 II
- 二叉树路径节点关键值和等于目标值(LeetCode--112&LeetCode--113)
- LeetCode算法题-11.|LeetCode算法题-11. 盛最多水的容器(Swift)
- LeetCode(03)Longest|LeetCode(03)Longest Substring Without Repeating Characters
- Leetcode|Leetcode No.198打家劫舍
- [leetcode数组系列]1两数之和
- 数据结构和算法|LeetCode 的正确使用方式
- leetcode|今天开始记录自己的力扣之路
- LeetCode|LeetCode 每日一题 [52] 表示数值的字符串