题目:
删除链表中等于给定值 val 的所有节点。
示例:
输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2->3->4->5
解题思路:
创建一个新的头节点作为前置节点,用来防止删除到最后元素节点next为空的情况(其实就是为了防止最后一个节点等于val)。
代码实现:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode removeElements(ListNode head, int val) { // 创建一个新节点作为头节点 ListNode prev = new ListNode(0); ListNode res = prev; prev.next = head; while (head != null && head.next != null) { if (head.val == val) { head.val = head.next.val; head.next = head.next.next; } else { head = head.next; prev = prev.next; } } if (prev.next != null && prev.next.val == val) { prev.next = null; } return res.next; } }