Tuesday, March 14, 2017

203. Remove Linked List Elements

这个题第一眼看感觉特别简单,无非就是用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