美文网首页
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