跳转至

203.移除链表元素 (Easy)*

题目描述*

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

示例*

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

输出: 1->2->3->4->5

代码*

首先要去掉链表头部值为 val 的部分,然后再去除后面的。

class Solution {
public:
    ListNode* removeElements(ListNode* head, int val) {
        if(head == nullptr) {
            return head;
        }
        while(head != nullptr && head->val == val) {
            head = head->next;
        }
        if(head == nullptr || head->next == nullptr) {
            return head;
        }
        ListNode *res = head;
        while(head != nullptr && head->next != nullptr) {
            if(head->next->val == val){
                head->next = head->next->next;
            }else {
                head = head->next;
                if(head == nullptr){
                    return head;
                }
            }
        }
        return res;
    }
};

最后更新: July 23, 2022