[LeetCode] 203. Remove Linked List Elements

来源:互联网 发布:图形化编程软件优缺点 编辑:程序博客网 时间:2024/06/05 08:25

Remove all elements from a linked list of integers that have value val.

Example
Given: 1 –> 2 –> 6 –> 3 –> 4 –> 5 –> 6, val = 6
Return: 1 –> 2 –> 3 –> 4 –> 5

// 添加一个虚拟头结点,方便操作class Solution {public:    ListNode* removeElements(ListNode* head, int val) {        ListNode virthead(-1);        virthead.next = head;        ListNode **prev = &virthead.next;        while (head) {            if (head->val == val) {                *prev = head->next;                delete head;            } else {                prev = &head->next;            }            head = *prev;        }        return virthead.next;    }};

这里写图片描述
这里写图片描述

    ListNode* removeElements(ListNode* head, int val) {        if (head == nullptr) return nullptr;        if (head->val == val) {            ListNode *tmp = head;            head = head->next;            delete tmp;            head = removeElements(head, val);        } else {            head->next = removeElements(head->next, val);        }        return head;    }

这里写图片描述
这里写图片描述

class Solution {public:    ListNode* removeElements(ListNode* head, int val) {        if (head == nullptr) return nullptr;        head->next = removeElements(head->next, val);        return head->val == val ? head->next : head;    }};