- 输入链表头节点,奇数长度返回中点,偶数返回上中点
- 输入链表头节点,奇数长度返回中点,偶数长度返回下中点
- 输入链表头节点,奇数长度返回中点的前一个,偶数长度返回上中点前一个
- 输入链表头节点,奇数长度返回中点的前一个,偶数长度返回下中点前一个(上中点)
其实链表的题都不是特别难,最重要的就是练习编码的能力以及各种边界条件的判断;
其实很多边界条件的选择只能一味不能言传,所以需要仔细体会,然后参考别人方式写出自己的代码;
1。输入链表头节点,奇数长度返回中点,偶数返回上中点
第一种解法
private Node midOrUpMidNode(Node head) {
//只有一个节点
if (head == null || head.next == null) {
return head;
}
Node slow = head, fast = head.next;
while (fast != null && fast.next != null) {
slow = slow.next;
fast = fast.next.next;
}
return slow;
}
第二种解法
private Node midOrUpMidNodeV2(Node head