其他分享
首页 > 其他分享> > [LeetCode题解]876. 链表的中间结点 | 快慢指针

[LeetCode题解]876. 链表的中间结点 | 快慢指针

作者:互联网

解题思路

使用快慢指针。这里要注意的是,while 的条件会影响当中间节点有两个时,slow 指向的是第一个,还是第二个节点。

// 返回的是第一个
while(fast.next != null && fast.next.next != null)


// 返回的是第二个
while(fast != null && fast.next != null)

代码

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     public int val;
 *     public ListNode next;
 *     public ListNode(int x) { val = x; }
 * }
 */
public class Solution {
    public ListNode MiddleNode(ListNode head) {
        // 快慢指针
        ListNode fast = head, slow = head;
        while(fast != null && fast.next != null) {
            fast = fast.next.next;
            slow = slow.next;
        }

        return slow;
    }
}

复杂度分析

标签:slow,ListNode,876,题解,fast,next,链表,null,public
来源: https://www.cnblogs.com/liang24/p/14013356.html