当前位置 : 主页 > 编程语言 > 其它开发 >

利用快慢指针寻找链表中间节点

来源:互联网 收集:自由互联 发布时间:2022-05-30
876. 链表的中间结点 这道题要求我们找到链表中的中间位置,首先想到第一种方法,使用两个指针,一个从头遍历到尾部确定长度,一个从头遍历到相应位置。那么有没有一遍遍历就能

876. 链表的中间结点 这道题要求我们找到链表中的中间位置,首先想到第一种方法,使用两个指针,一个从头遍历到尾部确定长度,一个从头遍历到相应位置。那么有没有一遍遍历就能解决的?那么我们想到快慢指针,因为快慢指针往往可以做到一遍遍历,在慢指针处找到答案

做法:
慢指针走一步,快指针走两步。这样快指针到末尾时,慢指针走到n位置,快指针在2n-1位置,这时就找到了中间位置

代码:

func middleNode(head *ListNode) *ListNode {
    l := head
    r := head
    for r != nil && r.Next != nil {
        l = l.Next
        r = r.Next.Next
    }
    return l
}
网友评论