题目
题目解析 与 解题思维
题目分析
j简单来说就是找到链表的中心节点,并删除该节点
7ensp;
解题思维
采用双指针(快慢指针),寻找确定中间节点的位置。并借用 一个节点变量 prev,来记录 slow的前驱节点。利用 两个节点 next 值,实现删除中心节点。
代码如下
class Solution {
public ListNode deleteMiddle(ListNode head) {
if(head == null){
return head;
}
// 如果链表只有一个节点,那么它就是中心节点,删除它
// 如果要问为什么,我少写了这块代码,提交就出错了
if(head.next == null){
return head.next;
}
ListNode fast = head;
ListNode slow = head;
ListNode prev = null;
while(fast!=null && fast.next!=null){
fast =fast.next.next;
prev = slow;
slow = slow.next;
}
prev.next = slow.next;
return head;
}
}