Leetcode-Easy 876. Middle of the Linked List

题目描述

给出一个列表,找出中间节点

思路

结题思路主要是通过快慢指针来找到中间节点:快指针的移动速度是慢指针移动速度的2倍,因此当快指针到达链表尾时,慢指针到达中点。


快慢指针寻找中间值

另外快慢指针也可以检测列表是否循环:让快慢指针从链表头开始遍历,快指针向前移动两个位置,慢指针向前移动一个位置;如果快指针到达NULL,说明链表以NULL为结尾,不是循环链表。如果 快指针追上慢指针,则表示出现了循环。

代码实现

class Solution:
    def peakIndexInMountainArray(self, A):
        """
        :type A: List[int]
        :rtype: int
        """
        return A.index(max(A))          

参考资料

  • Find middle element of a linked list
  • What is a slow pointer and a fast pointer in a linked list?
  • Python链表的实现
  • 快慢指针

你可能感兴趣的:(Leetcode-Easy 876. Middle of the Linked List)