链表的中间节点--Java版

    xiaoxiao2022-07-13  157

    题目描述:

    给定一个带有头结点 head 的非空单链表,返回链表的中间结点。

    如果有两个中间结点,则返回第二个中间结点。

    /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode middleNode(ListNode head) { if(head==null || head.next==null){ return head; } ListNode fast = head; //每次向前走两步 ListNode slow = head; //每次向前走一步 //当fast到链表尾时,slow恰好指向链表的中间节点 while(fast != null && fast.next != null){//由于fast一次要走两步,所以要判断fast.next slow = slow.next; fast = fast.next.next; } return slow; } }
    最新回复(0)