美文网首页
876. Middle of the Linked List

876. Middle of the Linked List

作者: 窝火西决 | 来源:发表于2019-05-29 18:44 被阅读0次

    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.

    题目

    返回链表中间结点,若长度为偶数,则返回靠后的中间结点

    思路

    经典题目,快慢指针法
    定义两个指针fastslow,从head开始fast每次走两步,slow每次走一步,当fast走到头时,slow刚好走到中间,返回slow

    代码

     public ListNode middleNode(ListNode head) {
             if (head==null||head.next==null) {//当链表为空或者只有一个元素时
                return head;
            }
             if (head.next.next==null) {//当链表有两个元素时
                return head.next;
            }
             ListNode fast=head;
             ListNode slow=head;
             while (fast!=null&&fast.next!=null) {//一般情况
                fast=fast.next.next;
                slow=slow.next;
            }
            
            return slow;
                
            }
    

    相关文章

      网友评论

          本文标题:876. Middle of the Linked List

          本文链接:https://www.haomeiwen.com/subject/rflutctx.html