Friday, December 28, 2018

[LeetCode]Remove Linked List Elements

给定头结点和删除的节点,让我们删除指定的节点。做法很简单,一直monitor下一个节点是不是我们要删除的节点即可。注意头结点可能被删除所以head会变化,我们用helper节点来帮我们keep track of新的head节点。O(N)时间,常数空间。代码如下:

/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
ListNode* helper = new ListNode(-1);
helper->next = head;
auto curr = helper;
while(curr->next)
{
while(curr->next && curr->next->val != val)
curr = curr->next;
if(!curr->next)break;
auto tmp = curr->next;
curr->next = tmp->next;
tmp->next = nullptr;
}
return helper->next;
}
};

No comments:

Post a Comment