力扣203题(移除链表元素)

 203、移除链表元素

 具体实现:

如果头结点是要删除的元素选择两种方式

1、直接使用原来的链表进行删除操作

 

 

 

 

 

2、设置一个虚拟头结点再进行删除操作

 

 

 

代码:

 1、不设置虚拟结点

 

class Solution {
    public ListNode removeElements(ListNode head, int val) {
        while (head != null && head.val == val){//如果头结点是要删除的值,就让头结点指向下一个节点
            head = head.next;
        }
        if (head == null){
            return head;
        }
         ListNode pre = head;
         ListNode cur = head.next;
         while (cur != null) {
            if (cur.val == val){
                pre.next = cur.next;
            }
            else{
                pre = cur;
            }
            cur = cur.next;
        }
        return head;
    }
}

 

 

2、设置虚拟头结点

 

class Solution {
    public ListNode removeElements(ListNode head, int val) {
        if (head == null){
            return head;
        }
        ListNode dummy = new ListNode(-1, head);
        ListNode pre = dummy;
        ListNode cur = head;
        while (cur != null) {
            if (cur.val == val){
                pre.next = cur.next;
            }
            else{
                pre = cur;
            }
            cur = cur.next;
        }
        return dummy.next;
    }
}

 

posted @ 2021-10-10 16:59  最近饭吃的很多  阅读(43)  评论(0编辑  收藏  举报