这个题第一眼看感觉特别简单,无非就是用dummy node检查一遍如果val是target的话就pre.next = pre.next.next越过当前点
然而一直跑不对,才发现忽略了一个比较tricky的点
就是说越过了当前点以后,pre并不用pre = pre.next
因为在做pre.next = pre.next.next相当于已经开始检查下一个点了
所以要用一个if else
如果当前点不是val就直接重新循环
public class Solution {
public ListNode removeElements(ListNode head, int val) {
if (head == null) {
return head;
}
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode pre = dummy;
while (pre != null && pre.next != null) {
if (pre.next.val == val) {
pre.next = pre.next.next;
} else {
pre = pre.next;
}
}
return dummy.next;
}
}
No comments:
Post a Comment