876. Middle of the Linked List
Posted king-lps
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了876. Middle of the Linked List相关的知识,希望对你有一定的参考价值。
1. 原始题目
Given a non-empty, singly linked list with head node head
, return a middle node of linked list.
If there are two middle nodes, return the second middle node.
Example 1:
Input: [1,2,3,4,5]
Output: Node 3 from this list (Serialization: [3,4,5])
The returned node has value 3. (The judge‘s serialization of this node is [3,4,5]).
Note that we returned a ListNode object ans, such that:
ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, and ans.next.next.next = NULL.
Example 2:
Input: [1,2,3,4,5,6] Output: Node 4 from this list (Serialization: [4,5,6]) Since the list has two middle nodes with values 3 and 4, we return the second one.
2. 题目理解
就是找到中间结点,然后依次打印链表结点。方法就是利用两个快慢指针。从头开始,如果快指针每次走两步,慢指针每次走一步,那么当快指针走到末尾时,慢指针正好在中间位置。
3. 解题
1 class Solution: 2 def middleNode(self, head: ListNode) -> ListNode: 3 pre = head # 快指针 4 cur = head # 慢指针 5 while(pre and pre.next): 6 cur = cur.next 7 pre = pre.next.next 8 9 return cur
检验:
1 # 新建链表1 2 listnode1 = ListNode_handle(None) 3 #s1 = [1,2,3,666,8,3,2,9,4,5,6,8,999,666] 4 s1 = [1,3,5,666,4,5] 5 for i in s1: 6 listnode1.add(i) 7 listnode1.print_node(listnode1.head) 8 9 10 s = Solution() 11 head = s.middleNode(listnode1.head) 12 listnode1.print_node(head)
1 3 5 666 4 5
666 4 5
以上是关于876. Middle of the Linked List的主要内容,如果未能解决你的问题,请参考以下文章
876. Middle of the Linked List
876. Middle of the Linked List
[LeetCode] 876. Middle of the Linked List
leetcode-876 Middle of the Linked List