基本思路:
建立虚拟头节点,若删除当前节点就将上一个节点指向当前节点的下一个节点,pre -> cur.next,否则当前节点移动到下一个节点。
class Solution {
public ListNode removeElements(ListNode head, int val) {
ListNode dummy = new ListNode(-1, head);
ListNode pre = dummy;
ListNode cur = head;
while (cur != null){
if (cur.val == val){
pre.next = cur.next;
}else{
pre = cur;
}
cur = cur.next;
}
return dummy.next;
}
}