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 ❤️❤️❤️❤️❤️
- 练习 148. 排序链表
- 中点是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,还是不一样的!😎😎😎