zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    win10 的MQTT + apache-apollo服务器使用
    网络协议 4
    nginx 命令
    win7安装两个jdk,1.7和1.8,下载、安装、配置环境变量,方便切换
    AC+DP练习
    BZOJ 1093 [ZJOI2007]最大半连通子图
    BestCoder Round #52 (div.1)
    洛谷1012 拼数
    洛谷1980 计数问题
    洛谷1424 小鱼的航程(改进版)
  • 原文地址:https://www.cnblogs.com/king-lps/p/10659064.html
Copyright © 2011-2022 走看看