203 移除链表元素

66 阅读1分钟

这一题目也可以非常有效的训练到删除链表元素的能力

一.题目

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

示例 1:

输入: head = [1,2,6,3,4,5,6], val = 6
输出: [1,2,3,4,5]

二.代码

class Solution {
    public ListNode removeElements(ListNode head, int val) {
        ListNode node = new ListNode(-1, head);  // 统一操作,防止head出现null值
        ListNode pre = node;
        ListNode now = head;
        while(now != null) {
            if(now.val == val) {
                // 这里是关键,要去想明白其实这时候pre还在now的前一个结点那
                pre.next = now.next;  
            }else {
                pre = now;
            }
            now = now.next;
        }
        return node.next;
    }
}