/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : val(x), next(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @param val int整型 * @return ListNode类 */ ListNode* removeElements(ListNode* head, int val) { // write code here auto p = head; while(head!=nullptr&&head->val==val){ head=head->next; } p=head; while(p!=nullptr&&p->next!=nullptr){ if((p->next)->val==val){ if((p->next)->next!=nullptr)p->next=(p->next)->next; else p->next=nullptr; }else{ p=p->next; } } return head; } };
如果删除了元素,就不要p=p->next,这样可能漏掉连续的元素