思路:Java中的链表节点的后继节点是它内部定义的一个属性,所以,要删除它的后继节点,只需把节点的后继节点属性赋值为后继节点的后继节点即可;
如删除list的下一个节点:
list.next = list.next.next;//注意:list.next!=null
考虑到返回值,可以使用浅拷贝的方式,即list=head,然后在list上操作,把head作为返回值
提交代码如下:
class Solution {
public ListNode removeElements(ListNode head, int val) {
if(head==null) return head;
ListNode list = head;
while(list.next!=null){
if(list.next.val==val) list.next = list.next.next;
else list = list.next;
}
return head.val==val? head.next:head;
}
}
提交结果: