#203
有两种办法,判断pre.next 要比直接判断head方便很多
(很多种方法)
// 第一种
public ListNode removeElements(ListNode head, int val) {
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode pre = dummy;
while (pre.next != null) {
if (pre.next.val == val) {
pre.next = pre.next.next;
}
else {
pre = pre.next;
}
}
return dummy.next;
}
第二种
public ListNode removeElements(ListNode head, int val) {
if (head == null) return head;
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode pre = dummy;
while (head != null) {
while (head != null && head.val == val) {
head = head.next;
}
pre.next = head;
pre = pre.next;
if (head != null) { // 防止最后一个数字是val
head = head.next;
}
}
return dummy.next;
}
上述方法需要每次都判断head是否为null,
当最后一个数字出现并且为target时,head不能等于head.next