一 题目
二思路
- 用一个临时节点当头节点前面的结点,这样可以解决头节点就匹配的情况
- 然后始终锁定前一结点和当前节点,直到当前节点不为空
三代码
public ListNode removeElements(ListNode head, int val) {
ListNode root=new ListNode();
root.next=head;
ListNode pre=root;
ListNode curr=head;
while (curr!=null){
if (curr.val==val){
//这里直接抛弃当前节点,所以只变动当前新节点,无需变前一个结点
pre.next=curr.next;
curr=pre.next;
}else {
//更新前一个节点
pre=curr;
curr=curr.next;
}
}
return root.next;
}