这题中文有点坑,建议看英文了解题目。
这里是只给了要删除的结点,没有给头结点,那么就不可能通过遍历来找到值然后删除。
这里的做法是:
将传入的结点node的值赋为其后继结点的值,即
node.val=node.next.val;
然后通过使node的next域指向node的后继结点的后继结点,就能变向实现删除结点node的操作了
即node.next=node.next.next;
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public void deleteNode(ListNode node) {
node.val=node.next.val;
node.next=node.next.next;
}
}
是可以通过的: