Leetcode 876. 链表的中间结点

110 阅读1分钟

Leetcode 876. 链表的中间结点

  • 思路:快慢指针
  • 留意点,链表长度为偶数时,我们是向上取,还是向下取

问题

  • 假如链表是: 1->2->3->4 ,链表中点,是2,还是3呢?

解法

假如链表是: 1->2->3->4 ,用快慢指针,来求一下;

  • 中点是2的解法
 public ListNode middleNode(ListNode head) {
        if (head == null) {
            return null;
        }
        ListNode slow = head;
        ListNode fast = head;
        // 核心条件
        while (fast.next != null && fast.next.next != null) {
            slow = slow.next;
            fast = fast.next.next;
        }
        return slow;
    }
  • 注意:while的一个条件:fast.next != null && fast.next.next != null ❤️❤️❤️❤️❤️

  • 中点是3的解法
 public ListNode middleNode(ListNode head) {
        if (head == null) {
            return null;
        }
        ListNode slow = head;
        ListNode fast = head;
        // 核心条件
        while (fast != null && fast.next!= null) {
            slow = slow.next;
            fast = fast.next.next;
        }
        return slow;
    }
  • 注意:while的一个条件:fast.next!= null ❤️❤️❤️❤️❤️

后记

  • 链表,和java 的int值除以2,还是不一样的!😎😎😎