203. 移除链表元素[简单]

70 阅读1分钟

题目

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点

解法一

思路

  • 用dummyHead,dummyHead.next = head
  • 记录pre,初始化为dummyHead
  • 如果相等,则pre.next = p.next,pre不动,防止下一个p也是相等的。
  • 如果不相等,则pre = p;

代码

    public ListNode removeElements(ListNode head, int val) {
        ListNode dummyHead = new ListNode(0, head);
        ListNode p = head;
        ListNode pre = dummyHead;
        while (p != null) {
            if (p.val == val) {
                pre.next = p.next;
            } else {
                pre = p;
            }
            p = p.next;
        }

        return dummyHead.next;
    }