0
点赞
收藏
分享

微信扫一扫

LeetCode 203. 移除链表元素

流沙雨帘 2022-03-12 阅读 113

链表

class Solution {
public:
    ListNode* removeElements(ListNode* head, int val) {
        if(head == nullptr)
            return head;
        while(head->val == val)		//删除头节点跟删除其他节点不一样
        {
            if(head->next != nullptr)
                head = head->next;
            else
                return nullptr;
        }
        ListNode* p = head;

        while(p != nullptr && p->next != nullptr)
        {
            if(p->next->val == val)
                p->next = p->next->next;
            else
                p = p->next;	//p的next被删除之后,要再次判断新的next是否符号
        }

        return head;
    }
};

可以设置一个虚拟的头节点来解决问题,这样可以避免删除头节点跟其他节点的区别

class Solution {
public:
    ListNode* removeElements(ListNode* head, int val) {
        ListNode* rHead = new ListNode(0);	//虚拟头节点
        rHead->next = head;
        ListNode* p = rHead;
        while(p->next != NULL)
        {
            if(p->next->val == val)
                p->next = p->next->next;
            else
                p = p->next;
        }
        return rHead->next;			//返回的是虚拟头节点下一个
    }
};
举报

相关推荐

0 条评论