Iterate
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class Solution { public void deleteNode(ListNode node) { ListNode pre = null; ListNode curr = node; while (curr.next != null) { curr.val = curr.next.val; pre = curr; curr = curr.next; } pre.next = null; } }
|
Iterate
1 2 3 4 5 6
| class Solution { public void deleteNode(ListNode node) { node.val = node.next.val; node.next = node.next.next; } }
|
一般的删除节点操作需要通过修改前驱节点的 next 指针来实现,而本题只提供了待删除节点,所以采用了复制 next 节点值至当前节点并删除 next 节点的方式来实现。开始我写出的解法为将 node 节点后的节点值依次覆盖至前驱节点然后再移除尾节点,但是没有该解法简洁。
References
237. Delete Node in a Linked List