【LeetCode】 203. 移除链表元素 Java版

203. 移除链表元素

删除链表中等于给定值 val 的所有节点。

示例:

输入: 1->2->6->3->4->5->6, val = 6
输出: 1->2->3->4->5

解决思路:

  1. 定义两个节点,一个prev来表示删除节点的先驱,cur表示要删除的节点;

  2. 在删除的时候,先考虑头节点后面的节点,如果先把头节点删除的话,头节点后面的那个如果还是要删除的,就会删不掉;
    【LeetCode】 203. 移除链表元素 Java版_第1张图片

  3. 遍历完链表,把需要删除的节点都删除掉prev.next = cur.next;
    【LeetCode】 203. 移除链表元素 Java版_第2张图片

  4. 最后考虑头节点是否是要删除的。

Code:

 public ListNode removeElements(ListNode head, int val) {
        //如果头为空直接就返回空
        if (head == null) {
            return null;
        }
        //定义两个节点先从除了头节点以外的进行删除
        ListNode prev = head;
        ListNode cur = prev.next;
        while (cur != null) {
            if (cur.val == val) {
                prev.next = cur.next;
                cur = cur.next;
            }else {
                prev = cur;
                cur = cur.next;
            }
        }
        //看一下头节点需要删除不
        if (head.val == val) {
            head = head.next;
        }
        return head;
    }

你可能感兴趣的:(#,链表,链表,java,leetcode,数据结构)