求单链表的中间节点

方法:用两个指针,一个慢指针一次走一步,一个快指针每次走两步,当快指针走完时,慢指针所在节点就是中间节点,这个方法只需要遍历一遍单链表,时间复杂度为O(n);

public ListNode middleNode(){
        ListNode fast=this.head;
        ListNode slow=this.head;
        while(fast!=null&&fast.next!=null){
            fast=fast.next.next;
            slow=slow.next;
        }
        return slow;
    }
发布了67 篇原创文章 · 获赞 12 · 访问量 1523

猜你喜欢

转载自blog.csdn.net/qq_42174669/article/details/102864041