删除链表中等于给定值 val 的所有节点。
struct ListNode
{
int val;
ListNode *next;
ListNode(int x): val(x), next(nullptr) {}
};
class Solution
{
public:
ListNode* removeElements(ListNode *head, int val)
{
ListNode *sentinel = new ListNode(0);
sentinel->next = head;
ListNode *pre = sentinel;
ListNode *cur = head;
ListNode *toDelete = nullptr;
while(cur)
{
if(cur->val == val)
{
pre->next = cur->next;
toDelete = cur;
}
else
pre = cur;
cur = cur->next;
if(toDelete)
{
delete toDelete;
toDelete = nullptr;
}
ListNode *ret = sentinel->next;
delete sentinel;
return ret;
}
}
};

1887

被折叠的 条评论
为什么被折叠?



