时间复杂度:O(1)
public ListNode deleteNode(ListNode head, ListNode toDeleteNode) {
if(head == null) return null;
//虚构头结点
ListNode dummy = new ListNode(0);
dummy.next = head;
//删除的节点不是末尾节点
if(toDeleteNode.next != null) {
//后一个节点覆盖删除节点
toDeleteNode.val = toDeleteNode.next.val;
//节点指向后一个节点的下一个节点
toDeleteNode.next = toDeleteNode.next.next;
}
//删除的节点是末尾节点
else {
ListNode cur = head;
ListNode pre = dummy;
while(cur != null) {
if(cur == toDeleteNode) {
pre.next = cur.next;
}
pre = cur;
cur = cur.next;
}
}
return dummy.next ;
}