有可能删除head,可以使用dummy node
public ListNode remove(ListNode head,int target) {
// corner case
if (head == null) {
return null;
}
// 创建一个dummy node并把head链接到dummy后面
ListNode dummy = new ListNode(-1);
dummy.next = head;
// 创建两个指针pre和cur分别指向dummy和head,当cur的值=target的时候,把cur.next链接到pre的下
// 一个,这样就直接跳过了cur。不相等pre和cur就同步移动
ListNode pre = dummy;
ListNode cur = head;
while (cur != null) {
if (cur.value == target) {
pre.next = cur.next;
}
else {
pre = cur;
}
cur = cur.next;
}
return dummy.next;
}