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

  • 相关阅读:
    composer 基本概念与常用命令总结
    慕课笔记-JavaScript正则表达式
    [网络编程]epoll的基础用法
    [C++学习笔记] const限定符
    boost库常用功能
    kafka C客户端librdkafka producer源码分析
    kafka 0.8.1 新producer 源码简单分析
    第一篇博客
    Jmeter连接数据库
    Jmeter录制APP脚本
  • 原文地址:https://www.cnblogs.com/king-lps/p/10659064.html
Copyright © 2011-2022 走看看