public ListNode deleteNode (ListNode head, int val) {
// write code here
if(head == null) return null;
// 加入一个头结点
ListNode res = new ListNode(0);
res.next = head;
// 前序节点
ListNode pre = res;
// 当前节点
ListNode cur = head;
while(cur != null) {
// 目标节点
if(cur.val == val) {
// 断开当前节点
pre.next = cur.next;
break;
}
// 两个指针同时向后遍历
pre = cur;
cur = cur.next;
}
// 返回去掉头结点
return res.next;
}