203. Remove Linked List Elements
203.1 题目描述:
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
203.2 解题思路:
- 思路一:设置两个指针。如果head为空,直接返回head。首先设置p节点,指向head。然后设置slow=p。循环,只要head!=空,如果head的值等于val,则slow指向head的next,否则,slow=slow.next。然后head=head.next。循环结束,返回p.next即可。
203.3 C++代码:
1、思路一代码(26ms):
class Solution112 {
public:
ListNode* removeElements(ListNode* head, int val) {
if (head == NULL)
return head;
ListNode *p = new ListNode(-1);
p->next = head;
ListNode *slow = p;
while (head!=NULL)
{
if (head->val==val)
slow->next = head->next;
else
slow = slow->next;
head = head->next;
}
return p->next;
}
};
203.4 Python代码:
1、思路一代码(109ms)
class Solution(object):
def removeElements(self, head, val):
"""
:type head: ListNode
:type val: int
:rtype: ListNode
"""
if head==None:
return head
p=ListNode(-1)
p.next=head
slow=p
while head!=None:
if head.val==val:
slow.next=head.next
else:
slow=slow.next
head=head.next
return p.next