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

 

转载于:https://www.cnblogs.com/king-lps/p/10659064.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值