从链表中删除指定节点。
传统方法是遍历链表,找到指定节点的父节点,将父节点的next指向指定节点的next即可。
由于本题目给定的输入只是要删除的节点,并没有链表的root节点,同时也有限制删除的节点不是尾节点(即待删除节点的next不是null),那么我们不需要遍历链表,只用将待删除节点的next节点信息覆盖待删除节点即可(代价是O(1)的)
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
public void deleteNode(ListNode node) {
if(node==null||node.next==null)
{
return ;
}
node.val = node.next.val;
node.next = node.next.next;
return ;
}
}