题目链接:Remove Linked List Elements
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
这道题的要求是在链表中删除指定元素的节点。
同样是建立个空头,便于操作。然后遍历链表,遇到要删除的节点,删除即可。
时间复杂度:O(n)
空间复杂度:O(1)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution
{
public:
ListNode* removeElements(ListNode *head, int val)
{
ListNode *h = new ListNode(0), *p = h;
h -> next = head;
while(p -> next != NULL)
{
if(p -> next -> val == val)
p -> next = p -> next -> next;
else
p = p -> next;
}
return h -> next;
}
};