1、Remove all elements from a linked list of integers that have value val.
Example:
Input: 1->2->6->3->4->5->6, val = 6 Output: 1->2->3->4->5
2、解答: 去除链表中指定的值,需要考虑链表中的第一个值为val 和全部为val的情况
3、C++代码
class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
if(head == NULL)
return NULL;
while(head != NULL && head->val == val) //若head等与val 则把head指针后移
head = head->next;
ListNode *curr = head;
while(curr && curr->next){
if(curr->next->val == val){
ListNode *temp = curr->next;
curr->next = curr->next->next;
delete temp;
}else{
curr = curr->next;
}
}
return head;
}
};
python代码:
class Solution:
def removeElements(self, head, val):
"""
:type head: ListNode
:type val: int
:rtype: ListNode
"""
prev = None
curr = head
while curr:
if curr.val == val:
if prev:
prev.next = curr.next
else:
head = curr.next //注意这个地方
else:
prev = curr
curr = curr.next
return head