解题思路:
方法一:头节点和非头节点分开处理
方法二:定义一个dummy虚拟节点,后面的节点就可以采用相同的处理方式
注意:
cur需要指向要删除的节点的上一个节点,因为要越过这一个被删除的节点
class Solution {
public ListNode removeElements(ListNode head, int val) {
ListNode dummy = new ListNode();
dummy.next = head;
ListNode cur = dummy;
while (cur.next != null) {
if (cur.next.val == val) cur.next = cur.next.next;
else cur = cur.next;
}
return dummy.next;
}
}