剑指offer-求链表的中间结点

一次遍历即可。

    /**
     * 定义两个指针,同时从链表的头指针出发,一个指针一次走一步,另一个指针一次走两步,
     * 当快指针到达链表的尾部,慢指针到达链表中间位置
     * @param head
     * @return 链表中间结点
     */
    public ListNode findCenterNode(ListNode head) {
        if(head == null) return null;
        
        ListNode fast = head;
        ListNode slow = head;
        while(fast != null && fast.next != null) { 
            fast = fast.next.next;
            slow = slow.next;
        }
        return slow;

 

posted @ 2016-08-15 09:14  no_one  阅读(179)  评论(0编辑  收藏  举报