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