码迷,mamicode.com
首页 > 其他好文 > 详细

876. Middle of the Linked List

时间:2019-04-05 16:54:43      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:指针   turn   col   ddl   就是   hat   HERE   def   and   

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

标签:指针   turn   col   ddl   就是   hat   HERE   def   and   

原文地址:https://www.cnblogs.com/king-lps/p/10659064.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!