LeetCode 876-链表的中间节点

1.链表的中间节点

public class MiddleNode876 {
    //定义一个单链表
    public class ListNode {
        int val;           //当前节点值
        ListNode next;     //下一个节点值
        //构造方法 初始化当前节点值
        ListNode(int x) { val = x; }
    }

    /**链表的中间节点
     *方法1:将链表的非空节点放入到数组中  时间复杂度 O(n)
     * @param head 带处理的链表
     * @return 中间节点
     */
    public ListNode middleNode01(ListNode head) {
        ListNode[] A = new ListNode[100];
        int t = 0;
        while (head != null) {
            A[t++] = head;
            head = head.next;
        }
        return A[t / 2];
    }

    /**链表的中间节点
     *方法2:快慢指针  时间复杂度 O(n)
     * @param head 带处理的链表
     * @return 中间节点
     */
    public ListNode middleNode02(ListNode head) {
        ListNode slow = head, fast = head;
        while (fast != null && fast.next != null) {
            //快指针是慢指针速度的2倍
            slow = slow.next;
            fast = fast.next.next;
        }
        return slow;
    }
}

2. LeetCode代码测试

发布了53 篇原创文章 · 获赞 0 · 访问量 1637

猜你喜欢

转载自blog.csdn.net/weixin_45450428/article/details/103962657
今日推荐