203. Remove Linked List Elements

Remove all elements from a linked list of integers that have value val.

Example:

Input: 1->2->6->3->4->5->6, val = 6
Output: 1->2->3->4->5
这是道easy的题目,不过容易出bug。
首先最后的head不确定,所以这时要用dummyHead来帮助处理。
我每次战在当前节点看下一个节点是不是target val
如果不是,则把当前节点移到下一个节点。
如果是,则把下下个点点接到当前结点的next(当前节点的下一个被删掉了, 这时容易出bug,我把指针又往下移了一位就错了)。
然后如果当当前节点的next为null的时候就不继续了。

    public ListNode removeElements(ListNode head, int val) {
        ListNode dummy = new ListNode(0);
        dummy.next = head;
        ListNode node = dummy;
        while (node.next != null) {
            if (node.next.val == val) {
                node.next = node.next.next;  // 这时就不要往下挪了!!
            } else node = node.next; 
        }
        return dummy.next;
    }

你可能感兴趣的:(203. Remove Linked List Elements)