Leetcode 分类刷题 —— 链表类(Linked List)
1、题目
Leetcode 876. Middle of the Linked List
给你单链表的头结点 head ,请你找出并返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。
2、思路
经典链表快慢指针题目,快指针每次走2步,慢指针每次走1步,当快指针走到末尾时慢指针正好走到中间。类似题目:链表排序
3、Java 代码
// 奇数个节点找到中点,偶数个节点找到中心左边的节点。
private ListNode middleNode(ListNode head) {
if (head == null || head.next == null) {
return head;
}
ListNode slow = head;
ListNode fast = head.next.next;
while (fast != null && fast.next != null) {
slow = slow.next;
fast = fast.next.next;
}
return slow;
}
网友评论